后台管理一张 5000 行的表格,叠上全选、行内编辑和固定列,滚动直接掉帧,风扇跟着起飞。换成 vxe-table 的虚拟滚动之后,同样的数据量拖动顺畅了很多,这是它最出圈的卖点。
它主打什么
- 虚拟滚动:只渲染可视区域里的行,几万行数据也能流畅拖动
- 完整的表格方案:行内编辑、数据校验、合并单元格、树形表格、固定列、导出,一套配齐
- 两种用法:vxe-grid 用配置对象建表,vxe-table 手写模板,团队按口味选
版本先对上
3.x 配 Vue2,4.x 配 Vue3,装之前先看清项目的 Vue 版本,配套的 xe-utils 工具库一起装:
npm install vxe-table xe-utils
入口文件里引入组件和样式,use 注册完就能写模板。一个最简的虚拟滚动表格长这样:
<vxe-table :data='list' height='600' :scroll-y='{enabled: true, gt: 100}'><vxe-column type='seq' width='60'/><vxe-column field='name' title='名称'/></vxe-table>gt 等于 100 表示超过 100 行才启用虚拟滚动,小表格没必要开。深度改样式时留意它的 class 前缀,全量引入体积不算小,在意首屏的项目可以做按需加载。
排序、筛选、分页这些常规能力它也都有,跟虚拟滚动可以同时开。有个小坑提前知道:行高固定时虚拟滚动最顺滑,单元格里放换行长文本时滚动会顿,要么固定行高截断显示,要么少放几列。
和 UI 库自带表格怎么选
几百行的常规后台表格,用项目里现成 UI 库的表格就够了,没必要多背一套 API。数据上万、要行内编辑加校验的完整方案、或者树形叠加虚拟滚动的需求,上它省事得多。
替换前先在测试页小范围跑一遍,把迁移成本摸清楚。取舍一句话:表格卡了先想分页,分页解决不了再上虚拟滚动。vxe-table 是把顺手的刀,但不是每张桌子都需要。