先给结论:不要再用“组件在首页正常”当作验收通过,而要把组件拆成“数据输入—渲染条件—交互状态”三层,为每一层各准备一个最小样例页,并规定样例页必须覆盖哪些差异条件。这样做的结果是,你能区分“组件本身坏了”和“页面环境让它表现不同”,下一步的修复范围才不会扩大。
同一组件在不同页面表现不同,常见原因并不在组件代码本身,而在它被放进页面后继承到的条件。你可以拿手头任意一个出问题的页面,按下面顺序做一次对照,而不是先改样式。
如果偏离出现在“加上某个外层容器”之后,问题属于页面环境;如果从第一步就偏离,问题属于组件自身。这个判断直接决定下一步:前者改页面约束,后者改组件默认值,两者不能混在一轮里改。
验收样例不是“打开某页面看看”,而是一份可以交给别人复现的条件组合。对同一组件,至少要为它准备三类样例页,每类只改变一个变量。
关键约束是:每个样例页只改一个变量。若你同时改容器宽度和字体,就无法知道是哪一个导致差异,验收结论也不可复用。
假设某卡片组件在列表页显示为等高,在详情页侧栏却高度塌陷。这里不涉及真实项目,只说明比较方法。
先建三个样例页:样例 A 只放卡片,设定固定宽度;样例 B 放卡片并套上详情页侧栏的容器;样例 C 放卡片并注入列表页的全局样式。若 A 正常、B 塌陷、C 正常,则差异来自侧栏容器对高度的约束,而不是卡片本身。下一步应检查侧栏是否使用了不同的对齐或尺寸规则,并在样例 B 上验证修改,而不是回到列表页改卡片。
这个例子的价值在于:它把“哪个页面有问题”转成了“哪一层条件有问题”,修复动作因此有了明确落点。
验收样例必须给出可判定的结果,否则不同人看同一页面会得出不同结论。建议对每个样例写明三项:
其中尺寸判定要注明假设条件,例如“在容器宽度不超过某值时保持单行”。一旦条件变化,判定标准也应随之调整,而不是把单一样例的数值当成通用标准。
当某个样例不通过,不要立刻改组件。先做一步实际动作:把该样例页复制一份,移除所有非必要外层样式,只保留组件和必要容器,再观察是否恢复。
如果恢复,说明问题在外层环境,下一步是定位具体是哪条外层规则;如果不恢复,说明问题在组件或数据输入,下一步是检查传入字段和组件默认值。这个动作的结果会直接决定你接下来是改页面还是改组件,避免两处同时改动导致无法回退。
同时要接受一个边界:样例通过不等于所有页面都通过。它只证明在给定条件组合下成立。规模化后出现的例外,往往来自未纳入样例的第三种条件,此时应新增样例,而不是推翻已有结论。