结论先行:不要急着改组件,先判断差异来自“容器上下文”还是“内容本身”。若组件在A页面正常、B页面异常,而两页传入的属性一致,优先怀疑父级宽度、栅格列数、继承字号或层叠顺序;反之才回到组件内部。构造验收样例时,为每个可疑变量各做一组对照页面,让同一组件只在单一条件上变化,再固定其余条件。这样做的代价是要多维护几组临时页面,但能避免把容器问题误判成组件缺陷,也不会出现“改好了这一页、别处又坏”的循环。
同一组件在不同页面表现不同,最常见的原因并不在组件代码里,而在它被放进什么样的父容器。判断方法很直接:把出问题的组件原样复制到一个空白模板页,只保留它的直接父级结构。
这一步的结果会直接决定下一步:前者去查容器样式,后者去查组件逻辑,不要两边同时改。
假设一个卡片组件在列表页显示正常,在详情页侧栏被压扁。可以建三组对照页,每组只改一个条件:
每组对照页只回答一个问题。若三组都正常,再回到原页面逐层删除父级样式,直到异常复现,那一层就是嫌疑层。这个动作的产出不是“修好了”,而是一条可复现的路径,后续改动才有验证依据。
如果两页的父级宽度、栅格、字号都一致,组件仍表现不同,那么“容器造成”的判断就不成立。此时要检查是否存在按页面路径或路由参数注入的样式覆盖,例如详情页额外加载了一段针对侧栏的规则。另一个容易被忽略的情况是异步数据:列表页数据先到、详情页数据后到,组件在两种时序下渲染出的中间态不同。
这类反例的意义在于提醒:对照页必须与真实页面的加载顺序尽量一致,否则你验证的是静态结构,而问题出在运行时。
临时对照页解决一次问题,验收项解决下一次。建议把每条差异写成一句可判定的描述,例如“卡片在父容器宽度小于其最小宽度时应换行而非溢出”,并注明触发条件与预期表现。这样在云南网站设计项目的后续迭代中,换主题、改栅格或调整字号时都能重新跑一遍,而不是靠记忆判断。
需要承认的是,验收样例覆盖的是已知变量组合,无法穷尽所有页面。当组件被放进全新布局时,仍可能出现未预料的表现差异,这时应把它当作新增样例的来源,而不是推翻整套验收方法。下一步动作很明确:先选出当前最常复用的两三个组件,为它们各建一组对照页,记录每个变量下的实际表现,再据此决定是修组件还是修容器。