虚拟化表格 beta

随着 Web 开发的不断演进,表格组件一直是我们 Web 应用中最受欢迎的组件,尤其是在仪表盘、数据分析领域。对于 Table V1,即使只有 1000 条记录,其性能也可能非常糟糕,给用户带来不便。

通过虚拟化表格,您可以瞬间渲染海量数据。

提示

此组件仍处于测试阶段,请自行承担使用风险。如果您发现任何 bug 或问题,请在 GitHub 上向我们报告以便修复。此外,还有一些 API 未在本文档中提及,因为其中部分 API 尚未完全开发。

虽然虚拟化表格非常高效,但当数据量过大时,您的网络内存大小可能会成为应用的瓶颈。因此请记住,虚拟化表格并非万能的最终解决方案,请考虑使用分页、添加过滤器等手段。

基础用法

让我们通过渲染一个包含 10 列和 1000 行的基础示例来演示虚拟化表格的性能。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

自动调整大小

如果您不想手动向表格传递 widthheight 属性,可以将表格组件包裹在 AutoResizer 中。它将为您自动更新宽度和高度。

调整浏览器窗口大小即可查看效果。

提示

由于其默认高度值为 100%,请确保 AutoResizer 的父节点具有固定高度。或者,您也可以通过向 AutoResizer 传递 style 属性来定义高度。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列

自定义单元格渲染器

当然,您可以根据需求渲染表格单元格。这是一个如何自定义单元格的简单示例。

Tom
Tom
Tom
Tom
Tom
Tom
Tom
Tom
Tom
名称
操作
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
日期

带选择功能的表格

使用自定义单元格渲染器为您的表格实现选择功能。

第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 0 行 - 第 10 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 1 行 - 第 10 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 2 行 - 第 10 列

行内编辑

正如我们在上面的选择功能中所演示的,您可以使用相同的方法启用行内编辑。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列

带状态的表格

您可以高亮显示您的表格内容,以区分“成功、信息、警告、危险”和其他状态。

要自定义行的外观,请使用 row-class-name 属性。例如,每 10 行使用 bg-blue-200 类高亮显示,每 5 行使用 bg-red-100 类高亮显示。

Tom
Tom
Tom
Tom
Tom
Tom
Tom
Tom
Tom
名称
操作
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
2020/10/01
日期

带固定行的表格

您可以使某些行固定在表格顶部,这可以通过使用 fixed-data 属性非常容易地实现。

您可以根据滚动事件动态设置固定行,如本示例所示。

第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列
第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列

带固定列的表格

如果您出于某种原因希望列固定在左侧或右侧,可以通过向表格添加特殊属性来实现。

您可以将列的 fixed 属性设置为 true(代表 FixedDir.LEFT)、FixedDir.LEFTFixedDir.RIGHT

第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 0 列
第 1 列
第 0 行 - 第 9 列
第 1 行 - 第 9 列
第 2 行 - 第 9 列
第 3 行 - 第 9 列
第 4 行 - 第 9 列
第 5 行 - 第 9 列
第 6 行 - 第 9 列
第 7 行 - 第 9 列
第 8 行 - 第 9 列
第 9 列

表头分组

通过自定义表头渲染器,您可以像本示例中所示对表头进行分组。

提示

在这种情况下,我们使用了演练场(playground)不支持的 JSX 功能。您可以在本地环境或在线 IDE(如 codesandbox)中进行尝试。

建议您使用 JSX 编写表格组件,因为它包含 VNode 操作。

第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 0 行 - 第 10 列
第 0 行 - 第 11 列
第 0 行 - 第 12 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 1 行 - 第 10 列
第 1 行 - 第 11 列
第 1 行 - 第 12 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 2 行 - 第 10 列
第 2 行 - 第 11 列
第 2 行 - 第 12 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 3 行 - 第 10 列
第 3 行 - 第 11 列
第 3 行 - 第 12 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 4 行 - 第 10 列
第 4 行 - 第 11 列
第 4 行 - 第 12 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 5 行 - 第 10 列
第 5 行 - 第 11 列
第 5 行 - 第 12 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 6 行 - 第 10 列
第 6 行 - 第 11 列
第 6 行 - 第 12 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 7 行 - 第 10 列
第 7 行 - 第 11 列
第 7 行 - 第 12 列
分组宽度 400
分组宽度 400
分组宽度 200
分组宽度 200
分组宽度 200
分组宽度 200
分组宽度 200
分组宽度 200
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列
第 10 列
第 11 列
第 12 列
第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
分组宽度 300
分组宽度 200
分组宽度 100
第 0 列
第 1 列
第 2 列
第 0 行 - 第 13 列
第 0 行 - 第 14 列
第 1 行 - 第 13 列
第 1 行 - 第 14 列
第 2 行 - 第 13 列
第 2 行 - 第 14 列
第 3 行 - 第 13 列
第 3 行 - 第 14 列
第 4 行 - 第 13 列
第 4 行 - 第 14 列
第 5 行 - 第 13 列
第 5 行 - 第 14 列
第 6 行 - 第 13 列
第 6 行 - 第 14 列
第 7 行 - 第 13 列
第 7 行 - 第 14 列
分组宽度 200
分组宽度 200
第 13 列
第 14 列

筛选

虚拟化表格提供自定义表头渲染器,用于创建自定义表头。我们可以利用这些渲染器来实现过滤器。

第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列
第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 0 列
第 1 列

可排序

您可以使用排序状态对表格进行排序。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

受控排序

您可以根据需要定义多个可排序的列。请记住,如果您定义了多个可排序的列,UI 可能会让用户感到困惑,因为目前正在对哪一列进行排序变得不明确。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

十字悬停

处理大型列表时,很容易丢失当前访问的行和列。在这种情况下,使用此功能会非常有帮助。

1
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 0 行 - 第 10 列
2
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 1 行 - 第 10 列
3
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 2 行 - 第 10 列

列合并

虚拟化表格不使用内置的 table 元素,因此与 TableV1 相比,colspanrowspan 的行为略有不同。但是,通过自定义行渲染器,这些功能仍然可以实现。在本节中,我们将演示如何实现这一点。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

行合并

既然我们已经介绍了 列合并,值得注意的是我们也支持行合并。它与列合并略有不同,但基本思想是一样的。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

行合并与列合并结合使用

我们可以将行合并和列合并结合起来,以满足您的业务需求!

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 1 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 1 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 1 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 1 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

树形数据

虚拟表格还可以渲染树状结构的数据。通过点击箭头图标,您可以展开或折叠树节点。

第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 0 列
第 1 列
第 0 行 - 第 9 列
第 1 行 - 第 9 列
第 2 行 - 第 9 列
第 3 行 - 第 9 列
第 4 行 - 第 9 列
第 5 行 - 第 9 列
第 6 行 - 第 9 列
第 7 行 - 第 9 列
第 8 行 - 第 9 列
第 9 列

动态高度行

虚拟表格能够渲染具有动态高度的行。如果您正在处理数据且不确定内容大小,此功能非常适合渲染根据内容高度调整的行。要启用此功能,请传入 estimated-row-height 属性。估计高度越接近实际内容,渲染体验越流畅。

提示

每行的高度在渲染行时进行动态测量。因此,如果您尝试显示大量数据,UI 可能会出现跳动。

Tom
错误地导致了他们真正的选择结果。
Tom
寻找一些必要的东西,有些是出于对柔软度的愉悦追求。
Tom
错误地导致了他们真正的选择结果。
Tom
错误地导致了他们真正的选择结果。
Tom
寻找一些必要的东西,有些是出于对柔软度的愉悦追求。
Tom
其逃避的选择。
Tom
错误地导致了他们真正的选择结果。
Tom
错误地导致了他们真正的选择结果。
Tom
寻找一些必要的东西,有些是出于对柔软度的愉悦追求。
Tom
其逃避的选择。
Tom
错误地导致了他们真正的选择结果。
名称
描述
操作
随机-200
随机-199
随机-198
ID

详情视图

利用动态高度渲染,您还可以在表格中显示详情视图。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

当您想要显示总结性消息或信息时,可以渲染自定义页脚。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 9 行 - 第 0 列
第 9 行 - 第 1 列
第 9 行 - 第 2 列
第 9 行 - 第 3 列
第 9 行 - 第 4 列
第 9 行 - 第 5 列
第 9 行 - 第 6 列
第 9 行 - 第 7 列
第 9 行 - 第 8 列
第 9 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

自定义空状态渲染器

渲染自定义空状态元素。

第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

无数据

遮罩层

当您想显示加载指示器或其他内容时,可以在表格上方渲染遮罩层。

第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列
第 3 行 - 第 0 列
第 3 行 - 第 1 列
第 3 行 - 第 2 列
第 3 行 - 第 3 列
第 3 行 - 第 4 列
第 3 行 - 第 5 列
第 3 行 - 第 6 列
第 3 行 - 第 7 列
第 3 行 - 第 8 列
第 3 行 - 第 9 列
第 4 行 - 第 0 列
第 4 行 - 第 1 列
第 4 行 - 第 2 列
第 4 行 - 第 3 列
第 4 行 - 第 4 列
第 4 行 - 第 5 列
第 4 行 - 第 6 列
第 4 行 - 第 7 列
第 4 行 - 第 8 列
第 4 行 - 第 9 列
第 5 行 - 第 0 列
第 5 行 - 第 1 列
第 5 行 - 第 2 列
第 5 行 - 第 3 列
第 5 行 - 第 4 列
第 5 行 - 第 5 列
第 5 行 - 第 6 列
第 5 行 - 第 7 列
第 5 行 - 第 8 列
第 5 行 - 第 9 列
第 6 行 - 第 0 列
第 6 行 - 第 1 列
第 6 行 - 第 2 列
第 6 行 - 第 3 列
第 6 行 - 第 4 列
第 6 行 - 第 5 列
第 6 行 - 第 6 列
第 6 行 - 第 7 列
第 6 行 - 第 8 列
第 6 行 - 第 9 列
第 7 行 - 第 0 列
第 7 行 - 第 1 列
第 7 行 - 第 2 列
第 7 行 - 第 3 列
第 7 行 - 第 4 列
第 7 行 - 第 5 列
第 7 行 - 第 6 列
第 7 行 - 第 7 列
第 7 行 - 第 8 列
第 7 行 - 第 9 列
第 8 行 - 第 0 列
第 8 行 - 第 1 列
第 8 行 - 第 2 列
第 8 行 - 第 3 列
第 8 行 - 第 4 列
第 8 行 - 第 5 列
第 8 行 - 第 6 列
第 8 行 - 第 7 列
第 8 行 - 第 8 列
第 8 行 - 第 9 列
第 9 行 - 第 0 列
第 9 行 - 第 1 列
第 9 行 - 第 2 列
第 9 行 - 第 3 列
第 9 行 - 第 4 列
第 9 行 - 第 5 列
第 9 行 - 第 6 列
第 9 行 - 第 7 列
第 9 行 - 第 8 列
第 9 行 - 第 9 列
第 10 行 - 第 0 列
第 10 行 - 第 1 列
第 10 行 - 第 2 列
第 10 行 - 第 3 列
第 10 行 - 第 4 列
第 10 行 - 第 5 列
第 10 行 - 第 6 列
第 10 行 - 第 7 列
第 10 行 - 第 8 列
第 10 行 - 第 9 列
第 0 列
第 1 列
第 2 列
第 3 列
第 4 列
第 5 列
第 6 列
第 7 列
第 8 列
第 9 列

手动滚动

使用 Table V2 提供的方法,以指定的偏移量/行数进行手动/程序化滚动。

提示

scrollToRow 的第二个参数是滚动策略,默认值为 auto,它会自行计算滚动位置。如果您希望滚动到特定位置,可以自行定义策略。可选值为 "auto" | "center" | "end" | "start" | "smart"

smartauto 的区别在于 autosmart 滚动策略的一个子集。

滚动像素
滚动行数
第 0 行 - 第 0 列
第 0 行 - 第 1 列
第 0 行 - 第 2 列
第 0 行 - 第 3 列
第 0 行 - 第 4 列
第 0 行 - 第 5 列
第 0 行 - 第 6 列
第 0 行 - 第 7 列
第 0 行 - 第 8 列
第 0 行 - 第 9 列
第 1 行 - 第 0 列
第 1 行 - 第 1 列
第 1 行 - 第 2 列
第 1 行 - 第 3 列
第 1 行 - 第 4 列
第 1 行 - 第 5 列
第 1 行 - 第 6 列
第 1 行 - 第 7 列
第 1 行 - 第 8 列
第 1 行 - 第 9 列
第 2 行 - 第 0 列
第 2 行 - 第 1 列
第 2 行 - 第 2 列
第 2 行 - 第 3 列
第 2 行 - 第 4 列
第 2 行 - 第 5 列
第 2 行 - 第 6 列
第 2 行 - 第 7 列
第 2 行 - 第 8 列
第 2 行 - 第 9 列

TableV2 API

TableV2 属性

名称描述类型默认值
cache提前渲染的行数,以提高性能number2
estimated-row-height渲染动态高度行时的预估行高number
header-class传递给表头包装器的自定义类名string / Function<HeaderClassGetter>
header-props传递给表头组件的自定义属性名object / Function<HeaderPropsGetter>
header-cell-props传递给表头单元格组件的自定义属性名object / Function<HeaderCellPropsGetter>
header-height表头的高度由 height 设置。如果给定数组,它将渲染长度等于该数组长度的表头行number/ number[]50
footer-height页脚元素的高度,如果提供,将计入表格总高度的计算。number0
row-class传递给行包装器的自定义类名string / Function<RowClassGetter>
row-key每行的键,如果不提供,将使用行的索引string / Symbol / numberid
row-props传递给行组件的自定义属性名object / Function<RowPropsGetter>
row-height每行的高度,用于计算表格的总高度number50
row-event-handlers附加到每行的一组处理器object<RowEventHandlers>
cell-props传递给每个单元格(表头单元格除外)的额外属性object / Function<CellPropsGetter>
columns列定义的数组。Column[]
data要在表格中渲染的数据数组。Data[][]
data-getter自定义从数据源获取数据的方法。Function<DataGetter<T>>
fixed-data用于在主内容上方和表头下方渲染行的数据object<Data>
expand-column-key指示哪一列是可展开的列键string
expanded-row-keys已展开行的键数组,可与 v-model 配合使用KeyType[]
default-expanded-row-keys默认展开行的键数组,非响应式KeyType[]
class虚拟表格的类名,将应用于所有三个表格(左、右、主)string / array / object
fixed标志指示表格列宽是固定还是弹性的。booleanfalse
width 必填表格宽度number
height 必填表格高度number
max-height表格最大高度number
indent-size树形表格的水平缩进number12
h-scrollbar-size表格水平滚动条的大小,用于防止水平和垂直滚动条重叠number6
v-scrollbar-size表格垂直滚动条的大小,用于防止水平和垂直滚动条重叠number6
scrollbar-always-on如果为 true,滚动条将始终显示,而不仅仅是在鼠标置于表格上方时显示booleanfalse
sort-by排序指示器object<SortBy>{}
sort-state多列排序指示器object<SortState>undefined

TableV2 插槽

名称类型
cellobject<CellSlotProps>
headerobject<HeaderSlotProps>
header-cellobject<HeaderCellSlotProps>
rowobject<RowSlotProps>
footer
empty
overlay

TableV2 事件

名称描述参数
column-sort列排序时调用object<ColumnSortParam>
expanded-rows-change展开行变更时调用KeyType[]
end-reached滚动到表格末尾时调用。回调包含剩余距离,通常是滚动条高度。Function
scroll滚动后调用object<ScrollParams>
rows-rendered行渲染后调用object<RowsRenderedParams>
row-expand点击箭头图标展开/折叠树节点时调用object<RowExpandParams>

TableV2 暴露的方法

方法描述参数
scrollTo滚动到给定位置Function
scrollToLeft滚动到给定的水平位置Function
scrollToTop滚动到给定的垂直位置Function
scrollToRow使用指定的滚动策略滚动到给定行Function

提示

注意这些是 JavaScript 对象,因此您不能对这些属性使用短横线命名法(kebab-case)

列属性

名称描述类型默认值
align表格单元格内容的对齐方式Alignmentleft
class列的类名string
key唯一标识KeyType
dataKey数据的唯一标识KeyType
fixed列的固定方向boolean / FixedDirfalse
flexGrowCSSProperties flex grow,仅在非固定表格中有效number0
flexShrinkCSSProperties flex shrink,仅在非固定表格中有效number1
headerClass用于自定义表头列类名string
hidden列是否不可见boolean
style自定义列单元格样式,将与网格单元格样式合并object
sortable指示该列是否可排序boolean
title在表头单元格中渲染的默认文本string
maxWidth列的最大宽度number
minWidth列的最小宽度number
width 必填列的宽度number
cellRenderer自定义单元格渲染器VueComponent / (props: CellRenderProps) => VNode
headerCellRenderer自定义表头渲染器VueComponent / (props: HeaderRenderProps) => VNode

类型定义

显示类型声明
ts
type HeaderClassGetter = (param: {
  columns: Column<any>[]
  headerIndex: number
}) => string

type HeaderPropsGetter = (param: {
  columns: Column<any>[]
  headerIndex: number
}) => Record<string, any>

type HeaderCellPropsGetter = (param: {
  columns: Column<any>[]
  column: Column<any>
  columnIndex: number
  headerIndex: number
  style: CSSProperties
}) => Record<string, any>

type RowClassGetter = (param: {
  columns: Column<any>[]
  rowData: any
  rowIndex: number
}) => string

type RowPropsGetter = (param: {
  columns: Column<any>[]
  rowData: any
  rowIndex: number
}) => Record<string, any>

type CellPropsGetter = (param: {
  column: Column<any>
  columns: Column<any>[]
  columnIndex: number
  cellData: any
  rowData: any
  rowIndex: number
}) => void

type DataGetterParams<T> = {
  columns: Column<T>[]
  column: Column<T>
  columnIndex: number
} & RowCommonParams

type DataGetter<T> = (params: DataGetterParams<T>) => T

type CellRenderProps<T> = {
  cellData: T
  column: Column<T>
  columns: Column<T>[]
  columnIndex: number
  rowData: any
  rowIndex: number
}

type HeaderRenderProps<T> = {
  column: Column<T>
  columns: Column<T>[]
  columnIndex: number
  headerIndex: number
}

type ScrollParams = {
  xAxisScrollDir: 'forward' | 'backward'
  scrollLeft: number
  yAxisScrollDir: 'forward' | 'backward'
  scrollTop: number
}

type CellSlotProps<T> = {
  column: Column<T>
  columns: Column<T>[]
  columnIndex: number
  depth: number
  style: CSSProperties
  rowData: any
  rowIndex: number
  isScrolling: boolean
  expandIconProps?:
    | {
        rowData: any
        rowIndex: number
        onExpand: (expand: boolean) => void
      }
    | undefined
}

type HeaderSlotProps = {
  cells: VNode[]
  columns: Column<any>[]
  headerIndex: number
}

type HeaderCellSlotProps = {
  class: string
  columns: Column<any>[]
  column: Column<any>
  columnIndex: number
  headerIndex: number
  style: CSSProperties
  headerCellProps?: any
  sortBy: SortBy
  sortState?: SortState | undefined
  onColumnSorted: (e: MouseEvent) => void
}

type RowCommonParams = {
  rowData: any
  rowIndex: number
}

type RowEventHandlerParams = {
  rowKey: KeyType
  event: Event
} & RowCommonParams

type RowEventHandler = (params: RowEventHandlerParams) => void
type RowEventHandlers = {
  onClick?: RowEventHandler
  onContextmenu?: RowEventHandler
  onDblclick?: RowEventHandler
  onMouseenter?: RowEventHandler
  onMouseleave?: RowEventHandler
}

type RowsRenderedParams = {
  rowCacheStart: number
  rowCacheEnd: number
  rowVisibleStart: number
  rowVisibleEnd: number
}

type RowSlotProps = {
  columns: Column<any>[]
  rowData: any
  columnIndex: number
  rowIndex: number
  data: any
  key: number | string
  isScrolling?: boolean
  style: CSSProperties
}

type RowExpandParams = {
  expanded: boolean
  rowKey: KeyType
} & RowCommonParams

type Data = {
  [key: KeyType]: any
  children?: Array<any>
}

type FixedData = Data

type KeyType = string | number | symbol

type ColumnSortParam<T> = { column: Column<T>; key: KeyType; order: SortOrder }

enum SortOrder {
  ASC = 'asc',
  DESC = 'desc',
}

enum Alignment {
  LEFT = 'left',
  CENTER = 'center',
  RIGHT = 'right',
}

type SortBy = { key: KeyType; Order: SortOrder }
type SortState = Record<KeyType, SortOrder>

常见问题

如何在第一列渲染带复选框的列表?

既然允许定义自己的单元格渲染器,您可以像示例 自定义单元格渲染器 中所做的那样自行渲染 checkbox,并自行维护状态。

为什么虚拟化表格提供的功能比 TableV1 少?

对于虚拟化表格,我们打算提供较少的功能,让用户根据需要实现自己的功能。整合过多的功能会使代码难以维护,且对于大多数用户来说,基础功能已经足够。一些关键功能尚未开发。我们很乐意听取您的意见。加入 Discord 以保持关注。

来源

组件样式文档

贡献者