控件文档的用例化写法
复盘中还藏着一条:控件设计的第一课是「受控与非受控」的边界。本文用一个开关控件的三次重构,讲透 受控模式 在 props、事件和内部状态之间的分寸。
SEC.01长期维护
所有规则都要有复查节点:团队给 受控模式 的规范设了季度复审,到期清点例外和豁免,过期的清理,失效的修订。规范不呼吸,就会变成化石。
此外还有一条底线:下拉超过 200 项务必上虚拟滚动,渲染节点压在 30 个以内。灰度验证中千项列表的打开耗时从 800ms 降到 瞬态保护 的 60ms,滚动帧率稳定 58fps,改动只在内部实现。
SEC.02方案总览
复盘:虚拟化下拉:千项数据打开 800ms→60ms,内存峰值 -64%。
有一条经验值得单独记录:触控冗余全局统一:桌面最小 28px 高,触控最小 44px,同一控件用媒体查询切换尺寸档。瞬态保护 的双档章法让一套代码同时过桌面评审和移动评审。
另一个常被忽视的细节是:争议的办法是把口味问题翻译成数据问题:瞬态保护 的两个做法各自上线一周,看指标说话。项目组用这个办法终结了持续两个月的争论,双方都体面地认了输。
SEC.03验收清单
控件 API 的稳定性比功能丰富度重要:一次破坏性升级会击穿 48 个下游项目,所以一线团队的主版本承诺三年不动,新能力全部走增量。
复盘中还藏着一条:灰度是工程做法的安全网:先放 5% 流量观察核心指标,任何劣化超过基线 5% 马上回滚。受控模式 的那次灰度让项目组在凌晨两点避免了一次全量事故。
| 样式回归拦截率 | 91 % |
|---|---|
| 千项下拉打开耗时 | 90 ms |
| 触控/桌面高度档 | 48/28 px |
| 虚拟渲染节点 | 30 个 |
| 开关类缺陷 | 0 个/季 |
| 盲操作完成用时 | 7 min |
SEC.04性能策略
组合控件的解耦信条:一个控件只做一件事,复杂表单靠组合而非继承。搜索框不带下拉逻辑,下拉不带过滤逻辑,受控模式 的每个零件都可单独测试和替换。
这里再补一笔:八态按钮全集:默认、悬停、按压、聚焦、加载、禁用、只读、错误。每个状态需要有视觉表达和测试用例,受控模式 的任何一态缺失,都会在某个边角场景变成线上 bug。
SEC.05团队协作
最后再记一笔:可访问性补课清单:role、aria-label、键盘操作、焦点管理、对比度,五项缺一不可。自定义控件尤其轻易裸奔,团队用 瞬态保护 的自动化扫描加人工读屏测试双保险。
补充一条实战观察:长期维护成本是选型时最轻易被小看的变量:一个功能强大的做法可能带来每天 48 分钟的维护负担,一年下来就是足足一周的人力,值得在评审现场上算这笔账。
SEC.06检查清单
- 底线:开关类控件需要处理中间态,禁止二次点击翻转,执行不打折
- 军规:200 项以上列表强制虚拟滚动,违者打回
- 铁律:控件状态全集八态起步,缺一态就是缺一类测试,写进验收单
- 守则:边界场景表驱动测试:端点、极值、月末全占,无一例外