最新版本v1.0.60
Table 表格 - 虚拟滚动
超大数据量场景下,通过虚拟滚动技术只渲染可视区域内的行,大幅提升表格性能。
纵向虚拟滚动
设置 virtual-config 的 enabled: true 即可开启虚拟滚动,配合 height 固定表格高度。默认数据量超过 100 条时自动生效。
纵向虚拟滚动(10,000 条数据)
设置行高
通过 virtual-config.rowHeight 设置虚拟滚动的行高,确保滚动条计算准确。支持设置为固定数值或函数(动态行高)。
自定义行高
冻结列 + 虚拟滚动
虚拟滚动可与固定列 (fixed) 同时使用,确保左右两侧的关键列始终可见。
固定列 + 虚拟滚动
排序与筛选
虚拟滚动与排序、筛选功能完全兼容。排序和筛选在内存中完成,虚拟滚动仅负责渲染优化。
排序 + 筛选 + 虚拟滚动
使用分组表头
虚拟滚动可以与多级表头 (children) 配合使用,支持分组列头的大数据渲染。
分组表头 + 虚拟滚动
百万级数据量
通过虚拟滚动,即使是百万级别的数据量也能保持流畅的滚动体验。
百万级数据
API
VirtualConfig 虚拟滚动配置
通过 virtual-config 属性传入。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| enabled | 是否启用虚拟滚动 | boolean | false |
| rowHeight | 行高(固定值或函数) | number | ((row, rowIndex) => number) | 48 |
| buffer | 缓冲区行数(上下各多渲染的行数) | number | 5 |
| overscan | 预渲染行数 | number | 3 |
| columnVirtual | 是否启用列虚拟化 | boolean | false |
| columnBuffer | 列缓冲区数量 | number | 3 |
方法(通过 ref 调用)
| 方法名 | 说明 | 参数 |
|---|---|---|
| scrollTo | 滚动到指定位置 | ({ top?, left?, row?, rowIndex? }) |
| refresh | 刷新虚拟滚动(数据变化后调用) | — |
| doLayout | 重新计算表格布局 | — |
注意事项
- 必须设置
height:虚拟滚动需要固定的容器高度来计算可见区域。 - 必须设置
row-key:虚拟滚动依赖行唯一标识来追踪渲染。 rowHeight要准确:虚拟滚动根据行高计算滚动位置和可见范围,设置不准确可能导致滚动条跳动。- 数据量阈值:默认数据量超过 100 条才会真正启用虚拟渲染,少于 100 条时正常渲染。
- 兼容性:虚拟滚动与排序、筛选、固定列、分组表头等功能完全兼容。