
iMouseWuandClaude Opus 4.8
94a22b62f7
fix(frontend): 小数据量关闭 DataTable 虚拟化并按行主键缓存行高,消除账号列表滚动抖动
账号列表(可变行高)在 @tanstack/vue-virtual 始终开启虚拟化下,估算行高(72)
远小于真实行高(~157),滚动时每行首次测量触发滚动补偿,表现为"一跳一跳"。
- DataTable 新增 virtualizeThreshold(默认 100):行数不超过阈值时全量渲染,
彻底绕开虚拟器的估算/测量/补偿链路;超过才虚拟化,保留大列表性能
- DataTable 补 getItemKey(与模板 :key 一致的行主键):itemSizeCache 由 index 键
改为行主键,排序/筛选/跨阈值来回都复用正确的已测行高,连带修复 >阈值 档
排序即抖的既存问题
- 虚拟/全量两模式统一为 renderRows,共用同一套行与单元格;measure ref 仅虚拟模式绑定
- useSwipeSelect:全量渲染(虚拟窗口为空)时改用真实 DOM 行按坐标二分定位,
修复关闭虚拟化后滑动多选点错行的隐患;定位逻辑提取为可测的导出函数
- AccountsView:estimate-row-height 72→156 对齐真实行高;virtualize-threshold=50,
常用分页档全量渲染无抖动,pageSize=100 仍虚拟化以约束每行 AccountUsageCell 的首屏请求扇出
- 新增/强化测试:DataTable 虚拟化决策与 getItemKey、useSwipeSelect DOM 兜底定位
经三方评审会(Claude + Codex + 作者)两轮讨论达成共识后落地。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 17:13:19 +08:00
..
2026-07-09 21:09:40 +08:00
2026-05-03 22:12:57 +08:00
2026-07-09 21:09:40 +08:00
2026-07-06 17:52:53 +08:00
2026-05-21 14:27:50 +08:00
2026-07-11 17:13:19 +08:00
2026-04-09 18:14:28 +08:00
2026-06-08 22:54:01 +08:00
2026-04-21 14:14:49 +08:00
2026-06-30 22:27:37 +08:00
2026-06-26 16:19:41 +08:00
2026-07-06 15:03:17 +08:00
2026-07-09 15:38:59 +08:00
2026-04-09 12:30:06 +08:00
2026-05-27 18:00:45 +08:00
2026-05-27 18:00:45 +08:00
2026-05-17 02:20:41 +08:00
2026-07-09 15:38:59 +08:00
2026-04-09 18:14:28 +08:00
2026-06-08 00:01:30 +08:00
2026-05-20 16:08:41 +08:00
2026-07-01 11:35:04 +08:00
2026-07-10 15:16:09 +08:00
2026-07-01 22:19:21 +08:00
2026-07-09 21:09:40 +08:00
2026-06-30 13:36:36 +08:00