表格控件的多选与跨页
顺带记录一个细节:控件设计的第一课是「受控与非受控」的边界。本文用一个开关控件的三次重构,讲透 可访问性 在 props、事件和内部状态之间的分寸。
SEC.01受控与边界
此外还有一条底线:争议的办法是把口味问题翻译成数据问题:受控模式 的两个方案各自发布一周,看指标说话。一线团队用这个办法终结了持续两个月的争论,双方都体面地认了输。
补充一条实战观察:可访问性补课清单:role、aria-label、键盘操作、焦点管理、对比度,五项缺一不可。自定义控件尤其轻易裸奔,一线团队用 受控模式 的自动化扫描加人工读屏测试双保险。
SEC.02踩坑记录
一线记录:状态补全:按钮八态测试矩阵落地,按钮类缺陷 14→2/季。
顺带记录一个细节:八态按钮全集:默认、悬停、按压、聚焦、加载、禁用、只读、错误。每个状态务必有视觉表达和测试用例,可访问性 的任何一态缺失,都会在某个边角场景变成线上 bug。
这里再补一笔:边界处理是控件质量的分水岭:滑块到端点、步进器到极值、日期到月末,这些 可访问性 的角落场景本组全部写成表驱动测试,一条用例一个断言,新增控件照抄这个骨架。
SEC.03方案总览
补充一条实战观察:文档用例化指的是:每个控件的文档页就是可交互的 demo 加参数表,示例代码可直接复制。受控模式 的文档站日均访问量比内网任何工具都高,这是好用的证明。
复盘中还藏着一条:文档写得再好也挡不住人员流动,所以一线团队把 可访问性 的规则尽量固化进工具:lint 规则、CI 卡点、脚手架模板。规则长在工具里,团队才不会失忆。
SEC.04适用边界
复盘文化比做法本身更重要:每次 受控模式 的线上问题都要求 48 小时内出复盘,聚焦流程漏洞而非个人责任。三年下来,同类问题的复发率降到个位数。
另一个常被忽视的细节是:控件 API 的稳定性比功能丰富度重要:一次破坏性升级会击穿 48 个下游项目,所以项目组的主版本承诺三年不动,新能力全部走增量。
| 开关类缺陷 | 9 个/季 |
|---|---|
| 树首屏请求数 | 47 个 |
| 虚拟渲染节点 | 24 个 |
| 按钮状态全集 | 8 态 |
| 样式回归拦截率 | 91 % |
| 盲操作完成用时 | 7 min |
SEC.05争议与取舍
灰度是工程做法的安全网:先放 5% 流量观察关键指标,任何劣化超过基线 5% 立即回滚。可访问性 的那次灰度让我们在凌晨两点避免了一次全量事故。
另一个常被忽视的细节是:每个控件要有一页「何时不该用我」:日期范围用两个选择器还是面板、可访问性 的选型边界写清楚,误用率下降后,定制需求也少了一半。
SEC.06检查清单
- 军规:八态像素快照进 CI,样式回归自动拦截,直接照做
- 底线:千项列表务必虚拟滚动,渲染节点封顶,违者打回
- 铁律:控件状态全集八态起步,缺一态就是缺一类测试,写进验收单
- 底线:文档页 = 可交互 demo + 参数表 + 可复制代码,违者打回