如果说『表格性能不佳』, 具体的表现症状是什么 ?
内存占用过多
滚动丢帧
界面假死
React-perf 结果
解决方法: 分析上表中不合理的 re-render 开销, 避免不必要的重绘,此案中, 消除大部分的 tooltip 组件, 可以缓解症状。
节点数
解决方法: 在表格的场景中,每少一列就等于减少 行 X 列 的单元格,因此在这里可以暂时修改产品策略,默认只显示重要的列即可,其余列的显示与否交于用户配置。
滚动时计算
解决方法: 错误的使用 jQuery, 使得 sizzle find 的耗时极高。
render function 耗时
解决方法: 低效的实现,数组元素在单次 render 中可能会被遍历多次 (M x N)。同时 allRows 这样的属性 实际采用了 call by name 的策略,每次访问,每次计算。
结论
所以,有这么多问题,表格能快到哪里去?
—— by 前星际争霸职业选手, WCG 中国赛区亚军, 中国虫王 F91孙一峰。
—— by 蛤蛤蛤
—— by 牛顿
随机数字测试的值的算法
copy from milo yip
细节爆炸多,岂止于作死
滚动条 hover 的样式
滚动条自身的尺寸对容器的影响
当容器尺寸发生变化时, 滚动条的 handler 的重新计算
代码操作容器 scrollTop / Left 时的同步问题
...
比如 auto resizer: src/common/resizer/detector.ts
通过往容器内插入一个特殊样式的元素, 当父容器大小发生变化浏览器会触发这个元素绑定 scroll 事件从而 notify 到容器尺寸发生变化的行为。