用途
本技能用于在 TanStack Table v9 中为表格添加或调试功能。它围绕“功能注册”这一核心机制展开,帮助开发者理解表格行为如何被显式安装,以及当某个 API 缺失时如何判断是注册遗漏而非版本移除。
主要能力
技能覆盖的功能范围包括:功能注册、行模型槽位、前置依赖、排序、过滤、分页、选择、单元格跨列以及列布局。它提供了一份按“请求的变更”来定位参考文档的对照表,涵盖手动模式与服务器数据、聚合、列分面、列过滤、分组、列排序、列固定、列缩放、列尺寸、列可见性、全局过滤、展开、分页、行固定、单元格选择、单元格跨列、行选择、排序等主题。
使用方式
核心用法是通过 tableFeatures 注册表格所需行为,例如:
import {
createSortedRowModel,
rowSortingFeature,
sortFn_alphanumeric,
tableFeatures,
} from '@tanstack/table-core'
export const features = tableFeatures({
rowSortingFeature,
sortedRowModel: createSortedRowModel(),
sortFns: { alphanumeric: sortFn_alphanumeric },
})
然后将稳定的 features 对象传入已安装的适配器构造函数。具体注册表决定可选的 API、选项、状态切片及其类型。核心行模型是自动的;自定义核心模型使用 coreRowModel。
注册规则要点:
- 在同一次
tableFeatures调用中,先注册每个前置功能,再注册依赖它的槽位。仅靠处理工厂无法安装该功能的 API 或状态。 - 行模型工厂使用
create*RowModel()功能槽位,其名称和前置依赖见功能参考,且不接受函数注册表参数。 filterFns、sortFns、aggregationFns是功能槽位而非表格选项,分别需要columnFilteringFeature、rowSortingFeature、rowAggregationFeature。- 导入单个内置函数(如
sortFn_alphanumeric)并注册其约定键。这些键会成为带类型的字符串名称;'auto'只能解析已注册的函数。当列不需要命名注册表条目时,可直接传入函数。完整注册表导出会打包所有内置函数。 columnResizingFeature需要columnSizingFeature;globalFilteringFeature需要columnFilteringFeature。其他依赖可检查已安装的FeatureSlotPrereqs。- 正常构建应使用显式功能。
stockFeatures是刻意的全功能便利选项或临时迁移辅助,会带来相应的打包成本。
API 缺失可能意味着注册缺失。在强制转换、重建 API 或假设 v9 移除了它之前,先检查具体功能对象。
适用场景
适用于需要按需引入表格功能、控制打包体积、排查功能 API 缺失原因,以及处理受控状态或重置行为的场景。对于受控状态或重置行为,需阅读共享状态文档并加载已安装适配器的状态技能以进行响应式接线。
限制
本技能强调只阅读请求行为及其依赖所需的参考文档;表格上已注册的无关功能并不意味着其参考文档是必需的。已安装 API 的发现方式为:检查 node_modules/@tanstack/table-core/dist/types/TableFeatures.d.ts 中的槽位和 FeatureSlotPrereqs,并沿 dist/features/<feature>/ 查看确切的状态、选项和实例声明。