Skip to content
专业版

FaTable 表格

基于 TanStack Table 封装的数据表格组件,提供基础展示、树型数据、工具栏、列显示控制、排序、边框、斑马纹、固定列、固定高度、单选、多选和插槽自定义能力。

使用场景

  • 常规数据列表展示
  • 通过 childrengetSubRows 展示树型层级数据
  • 需要单选或多选的数据表格
  • 固定列、固定高度等复杂表格布局
  • 需要外部处理排序状态的数据表格
  • 通过工具栏插槽放置新增、刷新、批量操作等自定义功能
  • 通过插槽自定义单元格、表头、表尾和空状态

Props

属性类型默认值说明
columnsTableColumn[]必需表格列配置
dataTData[]必需表格数据
borderbooleanfalse是否显示外边框和单元格纵向分割线
captionstring-表格标题
columnVisibilitybooleanfalse是否在工具栏右侧显示列显示控制按钮
defaultSortingTableSortingState[]初始排序状态,仅在未受控时生效
defaultExpandedTableExpandedState{}初始展开状态,仅在未受控时生效
emptyTextstring'暂无数据'空数据文本
enableMultiSortbooleantrue是否允许多列排序
enableSortingRemovalbooleantrue是否允许清除排序
expandedTableExpandedState-受控展开状态
getRowIdTableOptions<TData>['getRowId']-自定义行 ID 获取方法
getSubRowsTableOptions<TData>['getSubRows']-自定义子行获取方法,未设置时默认读取 children
indentSizenumber20树型数据每一级缩进像素
manualExpandingbooleanfalse是否由外部手动处理展开数据
multiplebooleanfalse是否为多选模式
rowKeykeyof TData | string | ((row: TData, index: number) => string | number)-行唯一标识
selectablebooleanfalse是否启用选择列
sortablebooleanfalse是否启用排序交互
sortingTableSortingState-受控排序状态
sortDescFirstbooleantrue首次排序是否从降序开始
stripebooleanfalse是否显示斑马纹
classHTMLAttributes['class']-外层根节点 class,包含工具栏和表格
tableRootClassHTMLAttributes['class']-表格根节点 class,仅作用于表格区域
tableClassHTMLAttributes['class']-表格 class
headerClassHTMLAttributes['class']-表头 class
headerRowClassHTMLAttributes['class']-表头行 class
bodyClassHTMLAttributes['class']-表体 class
rowClassHTMLAttributes['class'] | ((row: Row<TData>) => HTMLAttributes['class'])-表格行 class
selectionColumnClassHTMLAttributes['class']-选择列 class
treebooleanfalse是否启用树型数据展示,展开图标渲染在首列

TableColumn

属性类型说明
accessorKeystring数据字段名
headerstring | Function表头内容
cellstring | Function单元格内容
columnsTableColumn[]多级表头子列
align'left' | 'center' | 'right'对齐方式
fixedboolean | 'left' | 'right'固定列位置
enableSortingboolean是否允许当前列排序
enableMultiSortboolean是否允许当前列参与多列排序
sortDescFirstboolean当前列首次排序是否从降序开始
sortingFnstring | Function排序函数(组件内部不执行实际排序)
widthnumber | string列宽
minWidthnumber | string最小列宽
maxWidthnumber | string最大列宽
classHTMLAttributes['class']列 class
headerClassHTMLAttributes['class'] | Function表头 class
cellClassHTMLAttributes['class'] | Function单元格 class

选择列可配置 { type: 'selection' },并可通过 disabled 控制某一行是否禁用选择。

排序能力基于 TanStack Table 的 SortingState 实现。开启 sortable 后,支持单列排序与 Shift + 点击 多列排序;组件只维护排序状态并触发事件,不会对传入数据做实际排序,当前参与排序的列会显示独立背景。

树型数据能力基于 TanStack Table 的 Expanding Row Model 实现。开启 tree 后,组件默认读取每行的 children 字段作为子行,也可以通过 getSubRows 自定义子行来源;展开图标固定渲染在首个可见列。

Slots

名称说明作用域参数
caption自定义表格标题-
empty自定义空状态table
toolbar自定义工具栏左侧内容table
header-{columnId}自定义指定列表头columnheadertable
cell-{columnId}自定义指定列单元格cellcolumnindexrowtablevalue
footer-{columnId}自定义指定列表尾columnheadertable

Events

事件名说明回调参数
row-click点击表格行时触发(row: TData, index: number, event: MouseEvent)
selection-change选择状态变化时触发(rows: TData[], rowSelection: RowSelectionState)
sorting-change排序状态变化时触发(sorting: TableSortingState, table: TanStackTable<TData>)
expanded-change展开状态变化时触发(expanded: TableExpandedState, table: TanStackTable<TData>)
update:expanded受控展开状态更新时触发(expanded: TableExpandedState)

注意事项

  1. 推荐为复杂表格设置 rowKeygetRowId,保证选择状态和行更新稳定。
  2. 启用选择能力时需要设置 selectable,多选场景再配合 multiple 使用。
  3. 固定列建议显式设置列宽,避免横向滚动时出现宽度计算不稳定。
  4. 普通列默认可被列显示控制隐藏,设置 enableHiding: false 可禁止某列出现在列显示菜单中。
  5. 排序仅负责状态管理,真正的数据排序请在外部根据 sorting-change 自行处理。
  6. 树型数据建议设置 rowKeygetRowId,避免展开状态在数据更新后错位。