tanstack-table
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTanStack Table
TanStack Table
Overview
概述
TanStack Table is a headless table library — it provides state management and logic but no UI. You supply the rendering; it handles sorting, filtering, pagination, selection, and more.
When to use: Complex data tables with sorting/filtering/pagination, server-side data, large datasets (1000+ rows with virtualization), row selection/expanding/grouping.
When NOT to use: Simple static tables (use directly), display-only lists (use a list component), spreadsheet-like editing (consider AG Grid).
<table>TanStack Table是一个无头表格库——它提供状态管理和逻辑,但不提供UI。由你负责渲染部分,它则处理排序、筛选、分页、选择等功能。
适用场景: 包含排序/筛选/分页的复杂数据表格、服务端数据、大型数据集(1000+行,搭配虚拟化)、行选择/展开/分组。
不适用场景: 简单静态表格(直接使用标签)、仅用于展示的列表(使用列表组件)、类电子表格的编辑功能(考虑使用AG Grid)。
<table>Quick Reference
快速参考
| Pattern | API / Config | Key Points |
|---|---|---|
| Basic table | | Memoize data/columns to prevent re-renders |
| Column helper | | Type-safe column definitions |
| Column groups | | Nested headers; don't pin group columns |
| Sorting | | |
| Filtering | | |
| Pagination | | |
| Row selection | | Set |
| Column visibility | | Toggle with |
| Column pinning | | Don't pin group columns (known bug) |
| Row expanding | | For nested/tree data |
| Column resizing | | |
| Row grouping | | Performance degrades at 10k+ rows |
| Server-side | | All state in query key for proper refetching |
| Infinite scroll | | Combine with TanStack Virtual for best perf |
| Virtualization | | Disable when container hidden (tabs/modals) |
| React 19 Compiler | | Required until v9 fixes compiler compat |
| 模式 | API/配置 | 关键要点 |
|---|---|---|
| 基础表格 | | 对data和columns进行记忆化处理以避免重渲染 |
| 列辅助工具 | | 类型安全的列定义 |
| 列分组 | | 嵌套表头;不要固定分组列 |
| 排序 | | 服务端场景需设置 |
| 筛选 | | 服务端场景需设置 |
| 分页 | | 服务端场景需设置 |
| 行选择 | | 设置 |
| 列可见性 | | 使用 |
| 列固定 | | 不要固定分组列(已知bug) |
| 行展开 | | 适用于嵌套/树形数据 |
| 列调整大小 | | 实时调整用 |
| 行分组 | | 数据量达10k+行时性能会下降 |
| 服务端 | | 将所有状态纳入queryKey以确保正确重新获取数据 |
| 无限滚动 | | 搭配TanStack Virtual使用可获得最佳性能 |
| 虚拟化 | | 容器隐藏时(如标签页/模态框)需禁用该功能 |
| React 19 Compiler | | 在v9版本修复兼容性问题前必须添加该指令 |
Common Operations
常用操作
| Task | Method |
|---|---|
| Sort column | |
| Filter column | |
| First page | |
| Next page | |
| Previous page | |
| Last page | |
| Go to page | |
| Select row | |
| Hide column | |
| Get original data | |
| Pin column | |
| Resize column | |
| Expand row | |
| 操作任务 | 实现方法 |
|---|---|
| 排序列 | |
| 筛选列 | |
| 跳转到第一页 | |
| 下一页 | |
| 上一页 | |
| 跳转到最后一页 | |
| 跳转到指定页 | |
| 选择行 | |
| 隐藏列 | |
| 获取原始数据 | |
| 固定列 | |
| 调整列大小 | |
| 展开行 | |
Row Models
行模型
| Import | Purpose |
|---|---|
| Required |
| Sorting |
| Filtering |
| Pagination |
| Expanding |
| Grouping |
| Faceted filter counts |
| Unique values per facet |
| Min/max per facet |
| 导入项 | 用途 |
|---|---|
| 必填项 |
| 排序功能 |
| 筛选功能 |
| 分页功能 |
| 行展开功能 |
| 行分组功能 |
| 分面筛选计数 |
| 分面下的唯一值 |
| 分面下的极值 |
Common Mistakes
常见错误
| Mistake | Correct Pattern |
|---|---|
| Unstable data/columns reference | Memoize with |
Missing | Set |
| Query key missing table state | Include pagination, sorting, filters in queryKey |
Import from | Import from |
Using v7 | Use v8 |
| Pinning group columns | Pin individual columns within the group, not parent |
| Grouping on 10k+ rows | Use server-side grouping or disable for large datasets |
| Column filter not clearing on page change | Reset |
Missing | Add directive to components using |
Missing | Set |
| Filter value type mismatch | Match value types; clear with |
| 错误内容 | 正确做法 |
|---|---|
| 不稳定的data/columns引用 | 使用 |
服务端场景缺少 | 设置 |
| Query key中未包含表格状态 | 将分页、排序、筛选状态纳入queryKey |
从 | 从 |
使用v7版本的 | 使用v8版本的 |
| 固定分组列 | 固定分组内的单个列,而非父分组 |
| 对10k+行数据进行分组 | 使用服务端分组,或针对大型数据集禁用该功能 |
| 分页切换时列筛选未清空 | 筛选条件变化时将 |
使用React Compiler时缺少 | 在使用 |
行选择功能缺少 | 设置 |
| 筛选值类型不匹配 | 匹配值类型;使用 |
Delegation
任务委托
- Table pattern discovery: Use agent
Explore - Server integration review: Use agent
Task - Code review: Delegate to agent
code-reviewer
If theskill is available, delegate data fetching, caching, and infinite query patterns to it. If thetanstack-queryskill is available, delegate standalone virtualization patterns to it. If thetanstack-virtualskill is available, delegate URL search param sync for server-side table state to it. If thetanstack-routerskill is available, delegate server functions for server-side data loading to it.tanstack-start
- 表格模式探索:使用Agent
Explore - 服务端集成评审:使用Agent
Task - 代码评审:委托给Agent
code-reviewer
如果技能可用,可将数据获取、缓存和无限查询模式的相关任务委托给它。 如果tanstack-query技能可用,可将独立虚拟化模式的相关任务委托给它。 如果tanstack-virtual技能可用,可将服务端表格状态与URL搜索参数同步的任务委托给它。 如果tanstack-router技能可用,可将服务端数据加载的服务端函数相关任务委托给它。tanstack-start
References
参考资料
- Column definitions, helpers, visibility, and selection
- Filtering: column, global, fuzzy, and faceted
- Server-side patterns with TanStack Query
- Infinite scroll with cursor pagination
- Reusable table components (Shadcn-styled)
- Virtualization for large datasets
- Column and row pinning
- Row expanding and grouping
- Known issues and solutions (15 documented)
- v7 to v8 migration guide
- 列定义、辅助工具、可见性与选择
- 筛选:列筛选、全局筛选、模糊筛选与分面筛选
- 基于TanStack Query的服务端模式
- 基于游标分页的无限滚动
- 可复用表格组件(Shadcn风格)
- 大型数据集虚拟化
- 列与行固定
- 行展开与分组
- 已知问题与解决方案(15种已记录)
- v7到v8迁移指南