跳到正文
Linasan UI

DataTable 数据表格

列表页的表格:筛选区、工具栏、已筛选标签、排序、选择、固定操作列、分页和批量操作。基于 TanStack Table。

用户列表
共 46 条
用户手机号状态操作
林三1user01研发中心13810000000停用2026-01-01 10:00
王五2user02产品部13810007919正常2026-02-02 10:01
赵六3user03设计部13810015838正常2026-03-03 10:02
孙七4user04市场部13810023757正常2026-04-04 10:03
周八5user05研发中心13810031676正常2026-05-05 10:04
林三6user06产品部13810039595正常2026-06-06 10:05
王五7user07设计部13810047514停用2026-07-07 10:06
赵六8user08市场部13810055433正常2026-08-08 10:07
孙七9user09研发中心13810063352正常2026-09-09 10:08
周八10user10产品部13810071271正常2026-01-10 10:09
第 1–10 条,共 46 条
每页

一个列表页由几块拼起来,各自独立,按需取用:

组件文件作用
SearchForm / SearchFielddata-table/search-form筛选区:默认 3 个条件,其余收进「展开」;给 values 时改条件 300ms 自动搜索
TableCarddata-table/table-card白卡外框
TableToolbar同上标题、总数、刷新、行高、列设置
FilterChips同上已生效的筛选条件,可逐个移除
DataTabledata-table/data-table表格本体:加载骨架、空状态、无匹配、出错重试、固定列阴影
Paginationdata-table/table-card分页,每页 10 / 20 / 50
BulkBar同上勾选后底部浮出的批量操作条
TableActiondata-table/table-action操作列

列的 meta 控制显示:label(列设置里的名字)、sticky: 'right'(固定在右侧)、fixed(不可隐藏)、align、className。要表头筛选、合计、拖动列宽,用 AdvancedTable;要分组、树形、虚拟滚动,用 DataGrid。

安装

pnpm dlx shadcn@latest add https://docs.linasan.cn/r/data-table.json

第一次装本站的组件前先在项目里执行一次 shadcn init,详见 安装。

用法

import { DataTable, selectColumn } from '@/components/data-table/data-table';
import { Pagination, TableCard, TableToolbar } from '@/components/data-table/table-card';

const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), … });

<TableCard>
  <TableToolbar title="用户列表" count={total} table={table} />
  <DataTable table={table} status={isLoading ? 'loading' : isError ? 'error' : 'ready'} />
  <Pagination page={page} pageSize={size} total={total} onPageChange={setPage} />
</TableCard>

安装其余部分

pnpm dlx shadcn@latest add https://docs.linasan.cn/r/table-card.json

第一次装本站的组件前先在项目里执行一次 shadcn init,详见 安装。

筛选区是 search-form,操作列是 table-action。

属性

DataTable

属性

类型

TableToolbar

属性

类型

Pagination

属性

类型

SearchForm

属性

类型

本页目录