先给结论:不要只在一个页面里验收组件,而要构造一组“同组件、异上下文”的对照样例,把差异归因到可控制的条件上。具体做法是固定组件本身,只改变页面级变量,逐项记录表现,再决定这个组件是保留、改写还是退出。
同一个组件在两个页面表现不同,常见原因不在组件代码,而在页面给它的运行环境。可区分的原因大致有三类:一是容器约束不同,比如父级宽度、内边距、栅格列数;二是数据形态不同,比如传入的字段长度、空值、列表条数;三是加载顺序不同,比如组件依赖的样式或脚本在某个页面被其他内容抢先执行。
判断方法很直接:把出现异常的页面复制一份,只替换掉一个变量,看差异是否跟着这个变量走。如果跟着走,问题在上下文;如果不跟着走,才回到组件本身。这一步决定了后面是保留、改写还是退出,先做归因再做取舍,能避免把页面问题误判成组件缺陷。
验收样例不是把页面都点一遍,而是设计出能暴露差异的最小组合。建议围绕以下维度各取两个极端值:
假设某个卡片组件在列表页正常、在详情页错位。按上述维度构造四到六个样例后,如果错位只在“窄容器 + 长标题”这个组合出现,就说明组件对标题长度缺少约束,而不是组件整体不可用。这个结论会直接改变下一步:优先给标题加截断或换行规则,而不是重写整个卡片。
三种取舍各有成立条件,不必强行都用一遍。
保留适用于差异只出现在极少数边界组合,且不影响主要任务完成。此时应把该组合写进验收清单作为已知限制,并确认后续页面不会大量复用这种组合。
改写适用于差异出现在多个页面、但根因集中在少数可控条件上。改写前先明确要改的是组件内部约束还是页面传入方式,改完后用同一组样例复测,确认差异消失且没有引入新的溢出。
退出适用于组件依赖的上下文无法统一,或维护成本已经超过它带来的复用价值。退出不等于删除,可以先在新页面停用,观察是否还有页面依赖它,再决定是否清理。
每次改动组件后,按固定顺序执行:先跑最窄容器加最长内容的样例,再跑最宽容器加空数据的样例,最后回到真实页面确认。这个顺序的价值在于,前两步能快速暴露约束问题,第三步才验证真实上下文。
如果第一步就出现溢出或错位,说明组件缺少基本边界处理,此时不应继续往下测,而应先修约束。如果前两步正常、第三步异常,说明问题出在页面级变量,应回到上下文归因,而不是继续改组件。这个动作的结果会直接决定下一步是修组件、修页面,还是把该组件标记为不适用于这类页面。
某个页面表现正常,不等于该页面的写法就是正确原因。可能是内容恰好较短,也可能是该页面加载顺序碰巧有利。记录时应写清当时的具体条件,而不是只写“这个页面没问题”。
同样,某个统计归零或某项指标下降,也不能单独证明组件处理正确,还需要排除内容变化、入口调整等其他解释。验收样例的意义在于把条件写清楚,让下一次遇到同类差异时能直接对照,而不是重新猜一遍。