先给结论:不要为“组件本身有问题”还是“页面环境让它变形”争论,直接构造一组只改一个变量的对照样例,让同一组件在目标页面和隔离页面各跑一次。若隔离页面正常、目标页面异常,问题多半在页面环境;若两处都异常,才优先怀疑组件实现。这个动作在缺少完整数据或后台权限时也能做,但它只能缩小范围,不能直接证明根因。
同一个组件在 A 页面正常、在 B 页面错位或失效,通常只有两类解释。
这两类解释会导向完全不同的修复成本。前者要改组件,后者往往只需调整页面。验收样例的目的,就是先判断该往哪边走,而不是先改代码。
把组件分别放进两个页面:一个是出问题的目标页面,一个是新建的隔离页面。隔离页面只保留组件运行所需的最小结构,不引入目标页面的全局样式和其他脚本。两处使用同一份组件代码、同一份数据、同一视口宽度。
可执行的最小动作是:在隔离页面加载组件,记录它是否正常;再回到目标页面,用同样的操作路径触发一次。结果分三种:
这一步的结果会直接决定下一步:第一种情况去比对两页的全局样式和脚本加载顺序;第二种情况回到组件内部,检查它对输入数据的假设。
光看“正常/异常”还不够,要收集能指向具体原因的证据。
假设一个例子:某列表组件在详情页正常,在首页错位。隔离页正常,首页异常,且首页父容器设置了变换属性。此时较合理的推断是定位基准被改变,而不是组件本身写错。这个推断仍需通过移除该属性后复测来确认。
没有后台权限、拿不到完整日志时,仍可执行的动作包括:用浏览器开发者工具查看计算样式、临时在本地副本中注释可疑的全局规则、用隔离页面复现。这些动作能帮你把范围缩小到“页面环境”或“组件实现”之一。
但不能由此推出:组件一定没有问题、某条全局样式一定是根因、或修复后一定不再复发。请求量、报错量暂时归零,也可能只是因为测试路径没覆盖到其他页面,不能单独证明处理正确。
为了让结论可比较,每次验收都按同一组条件执行:同一组件版本、同一数据、同一视口宽度、同一操作步骤。记录三件事:隔离页面结果、目标页面结果、两页的关键计算样式差异。这样下次同类问题出现时,能直接对比,而不是重新猜。
如果条件允许,把隔离页面保留为长期对照页。它的价值不在于证明组件绝对正确,而在于让“页面环境”这个变量始终可被单独观察。缺少这个对照,任何一次修复都只是碰运气。