先别急着改组件。把出问题的两个页面各复制一份,只保留组件本身和它依赖的数据,做成两个最小页面,再逐项替换变量。这样做的目的是让每次只改变一个条件,观察结果是否跟着变。如果替换某个变量后差异消失,它就是候选原因;如果没有消失,就继续下一项。下面按这个思路展开。
同一组件在不同页面表现不同,通常落在三种情况里,处理顺序不一样。
判定方法很简单:把正常页面的组件连同它的直接父容器一起复制到异常页面对应位置,如果表现跟着复制过去,问题在组件或数据;如果表现留在原页面,问题在页面环境。这一步不需要读完整代码,先拿到方向。
不要写“显示不正常”,要写成可判断的句子,例如“按钮文字换行成两行”“图片高度比其他页矮一截”“下拉选项顺序和其他页相反”。一个样例只验证一个差异点,多个差异点分开建样例。
新建两个本地页面,分别粘贴两边的组件调用代码和它依赖的数据。删掉导航、页脚、统计脚本等无关部分。裁剪后如果差异还在,说明样例有效;如果差异消失,说明原因在被删掉的部分里,回到上一步重新圈定范围。
保持两个样例页面结构一致,然后依次替换:把 A 页的数据换到 B 页,把 B 页的容器样式换到 A 页,把两边引用的组件文件统一成同一个版本。每替换一项就刷新观察,记录结果。哪一项替换后差异消失,哪一项就是当前最可能的原因。
找到原因并修正后,把那个触发差异的数据或环境条件保留在样例里,作为以后改组件时的检查项。例如“标题长度为 40 个汉字时按钮是否换行”。这样下次改动不会悄悄把问题带回来。
假设甲页面按钮文字一行显示,乙页面同样文字换成两行。按上面的步骤操作:先裁剪成两个只含按钮的最小页面,差异仍在。然后把甲页的按钮文字复制到乙页样例,仍然两行,说明不是文字内容的问题。接着把甲页按钮外层容器的宽度设置复制到乙页样例,换行消失,说明差异来自容器宽度。此时可以确认:组件本身能适应,是乙页给按钮预留的宽度不够。下一步动作是检查乙页该区域的布局规则,而不是去改组件内部样式。这个例子里的页面和数据都是假设的,用来演示比较方法,不代表任何真实项目结果。
有些现象容易被当成原因,其实解释不止一种。
要区分这些解释,靠的是替换法得到的对照结果,而不是单页面的孤立现象。每排除一个变量,剩下的候选原因就更少,结论才站得住。
如果需要把问题交给同事或外部开发者,样例要能独立运行。交接内容至少包括:两个最小页面文件、触发差异的具体数据、已经替换过的变量和结果、当前最可能的原因。这样对方不需要重新搭环境,可以直接从你停下的地方继续。验收时也以同一份样例为准:修正后差异消失,且回归样例通过,才算处理完成。若差异只在你本地出现,先把样例发给对方运行一次,确认双方看到的是同一个现象,再进入修改环节。