先把“表现不同”拆成可核对的条件,再构造验收样例:固定组件、页面和操作路径,只改变一个变量,记录差异是否稳定复现。如果换浏览器、换账号或换网络后差异仍出现,就把它当组件与页面的适配问题;如果只在某个页面出现,优先查该页面的参数、容器宽度和初始化顺序。
同一组件在不同页面表现不同,常见原因可以分成四类:页面传入的数据不同、组件初始化时机不同、外层容器尺寸或样式不同、同一页面加载了其他脚本或样式。这四类对应的验收样例不同,混在一起测,结论会互相干扰。
判断方法很直接:先对比两个页面传给组件的参数是否一致。如果参数一致,再看组件挂载时容器是否已经有确定宽高。如果容器尺寸也一致,再检查该页面是否额外加载了会影响组件内部选择器的全局样式或脚本。只有把差异定位到某一层,验收样例才有意义。
假设一个常见场景:同一个筛选组件放在列表页正常展开,放在详情页侧栏却高度塌陷。两个页面的组件版本、参数和浏览器都相同,但表现不同。此时不要先争论“是不是组件坏了”,而是构造下面这份样例。
这份样例的价值在于:它把“列表页正常、详情页不正常”这种模糊描述,变成了“在容器宽度低于 320px 且初始化发生在样式加载之前时塌陷”。下一步动作也随之明确——要么调整容器最小宽度,要么调整初始化顺序,而不是继续猜测。
假设详情页侧栏在窗口宽度 1280px 时组件正常,缩到 1024px 时高度塌陷;而列表页在同样两个宽度下都正常。此时可以构造两组对照:
如果改宽度后恢复正常,说明问题在容器尺寸;如果改初始化顺序后恢复正常,说明问题在加载时机。两种结果指向不同的修复动作,也决定了验收样例应该固定哪个变量。这里的数字只是说明比较方法,不代表任何真实项目的测量结果。
多人协作时,分歧往往不是“谁对谁错”,而是每个人看到的条件不同。验收样例至少要写清:页面地址或页面标识、组件版本、传入参数、容器尺寸、操作步骤、观察结果、判定条件。缺少其中任何一项,另一个人都可能得到不同结论。
一个可执行的动作是:把上述字段做成一张核对清单,每轮只填一行。第一轮记录列表页,第二轮记录详情页,第三轮记录只改一个变量后的结果。当三轮结果能解释差异来源时,再决定是改组件、改页面容器,还是改加载顺序。这样处理,验收样例本身就成了排查记录,而不是一次性的测试结论。
如果差异已经能稳定复现,并且原因指向单一变量,继续增加样例的边际价值会下降。此时更有效的动作是:先在最小范围内修改那个变量,再用同一份样例复测。复测通过,就把该条件写进验收标准;复测不通过,说明还有第二个变量在起作用,需要回到样例继续拆分。
反过来,如果差异无法稳定复现,不要急着下结论。请求量、报错次数或某个统计归零,都不能单独证明组件没有问题;它们还可能受缓存、网络波动或采样方式影响。此时应优先补充环境信息,而不是直接修改线上代码。验收样例的意义,是让分歧变成可以核对的项目,而不是让所有人接受同一个猜测。