先给结论:不要试图找到一个“全局正确”的组件版本,而是为每个页面分别定义可判定的验收样例,把差异当成需要记录和确认的事实。具体做法是:先固定组件本身的输入和输出,再按页面列出上下文变量(容器宽度、父级样式、数据形态、加载顺序),最后为每种变量组合写一条可复现的检查步骤。这样做的结果是,你能区分“组件坏了”和“组件被页面环境改变了”,下一步的修复范围也随之确定。
假设一个筛选组件在列表页正常展开,在详情页却收起后无法再次打开。这个现象在旧系统退出、旧合作关系收尾的阶段尤其常见,因为不同页面往往由不同时期的人维护,样式表和脚本版本并不统一。此时最危险的做法是直接改组件源码,因为改动可能让原本正常的页面也出问题。
更稳妥的起点是承认现象本身是真实的,然后把它拆成两个待验证的解释。
组件的展开状态依赖某个内部变量或事件监听。如果同一组件在 A 页面正常、B 页面异常,可能的原因是 B 页面存在重复初始化、事件被其他脚本拦截,或者组件被渲染了两次。这类问题的证据特征是:异常与页面内容无关,只与页面加载了哪些脚本有关。
组件本身逻辑没变,但 B 页面的父容器有 overflow: hidden、更窄的宽度,或者祖先元素设置了影响层级的样式。这类问题的证据特征是:把组件单独放到一个干净页面里能正常工作,放回 B 页面就异常。
下面这组动作可以帮助你判断,而不是靠猜测:
注意,脚本报错数量归零、某个请求返回 200,都不能单独证明问题已解决。这些现象还有别的解释:报错可能被捕获了,请求成功也可能返回了不符合预期的内容。判断依据应是组件在目标页面上是否达到你定义的验收标准。
验收样例不是“组件能正常使用”,而是一条别人可以照着复现的步骤。建议每条样例包含四个要素:前提、动作、预期、判定方式。
同一个组件在三个页面使用,就写三组样例,而不是写一条“通用样例”。差异本身就是验收内容的一部分。
假设某站点有三个页面共用同一个日期选择组件:列表页、表单页、弹窗内嵌页。验收样例可以这样写:
如果只有列表页通过,另外两页失败,那么验收结论不是“组件不合格”,而是“组件在表单页和弹窗场景下需要补充适配”。下一步动作是分别针对这两个场景调整容器或层级,而不是回退整个组件。
当你准备下线旧页面或结束旧合作关系时,这套样例还有一个用途:判断哪些页面值得保留。做法是给每个待退出页面跑一遍现有组件的验收样例,记录通过和失败的条目。通过条目多的页面,说明其上下文与组件兼容良好,迁移成本低;失败条目集中在少数几个变量上的页面,说明问题可定位,也值得保留。真正需要整体放弃的,通常是那些连最小页面都无法让组件正常工作的场景。
把每个页面的样例结果和差异变量记录下来,你就得到了一份可交接的清单:谁在什么条件下负责修复哪一条,而不是笼统地说“组件有问题”。