先给结论:不要试图找出“组件在哪个页面表现正确”,而要把差异本身当作验收对象。你需要为同一组件建立一组跨页面样例,让每个样例都记录页面上下文、输入数据和期望输出,然后判断差异是来自组件配置、页面容器样式,还是数据形态。以下方法适用于你手里已经有一个可访问但表现不一致的页面或资料包。
同一组件在不同页面表现不同,通常落在三种原因上,对应的验收样例构造方式也不同。
把这三类混在一个验收样例里,你得到的结论无法指向下一步动作。先分类,再决定样例怎么搭。
假设你手里有一个商品卡片组件,在列表页显示正常,在详情页侧边栏却出现文字截断。按以下步骤处理。
这一步的实际动作是:把详情页侧边栏容器宽度手动调到与列表页一致,再观察组件表现。如果差异消失,下一步就是修改容器约束或为窄容器单独定义组件变体;如果差异仍在,则继续排查数据形态或加载时序。这个动作的结果直接决定你接下来改组件还是改页面布局。
确认差异来自容器约束后,通常有两种做法,选择条件不同。
选择一:让组件自适应所有容器。成立条件是容器宽度变化范围有限,且组件内部元素可以用相对单位和换行规则覆盖。代价是组件内部逻辑变复杂,窄容器下可能出现你不希望的折叠顺序。适合组件复用页面数量多、且各页面容器差异不大的情况。
选择二:为组件定义明确的尺寸变体,页面按需选用。成立条件是页面容器差异大,且你愿意在页面层显式声明使用哪个变体。代价是页面配置项增加,新增页面时需要多做一次选择。适合详情页侧边栏、弹窗内嵌、移动端列表等容器差异明显的场景。
判断依据不是哪种更先进,而是:如果你把容器宽度从最窄到最宽逐一测试,组件自适应方案是否能在所有宽度下都满足期望输出。只要有一个宽度不满足,就应优先考虑变体方案,而不是继续加媒体查询补丁。
假设某页面有一个标签组件,在文章列表页横向排列,在作者页纵向堆叠。两个页面容器宽度相同,但列表页外层有横向滚动容器,作者页没有。按前述分类,这属于容器约束差异中的溢出设置差异。
构造样例时,固定标签数量为 5 个、文字长度一致,只改变外层是否允许横向滚动。期望输出写为“标签不换行且不溢出可视区域”。执行后如果列表页正常、作者页溢出,则下一步动作是给作者页容器补上换行或滚动规则,而不是修改标签组件本身。如果两个页面都溢出,才需要检查标签组件的最小宽度设定。
这个例子的数字和场景均为假设,用于说明比较方法,不代表任何真实项目结果。
为了让样例可执行、可复现,每个样例至少包含以下字段。缺少任何一项,执行人都可能得到不同结论。
当同一组件在多个页面出现不同表现时,验收的重点不是消灭差异,而是让每个差异都有明确的归属类别和对应的处理动作。先分类,再构造对照样例,最后根据样例结果决定改容器、改数据还是改变体。这样你得到的不是一份“看起来没问题”的检查表,而是一条能继续推进的修改路径。