用途:在 @tanstack/react-table 中通过 createTableHook 工厂创建可复用的 React 表格基础设施,当多个表格共享真实约定时使用;一次性表格直接用独立的 useTable。
主要能力:工厂一次绑定 features、getRowId 等默认值与组件注册表,返回 createAppColumnHelper、useAppTable、useTableContext;AppTable 支持普通 JSX 子元素,函数子元素仅在带 selector 时有效;可在工厂注册可复用的 table/cell/header 组件并通过 App* provider 使用;useTableContext 可直接读取已注册上下文,避免属性透传。
用法:把工厂放在基础设施模块中,保持模块作用域。示例:const { createAppColumnHelper, useAppTable, useTableContext } = createTableHook({ features: tableFeatures({ rowSelectionFeature }), getRowId: (row) => row.id })。用 createAppColumnHelper<Person>() 推断列,再调用 useAppTable 传入各自的 data、columns、state 与 initial state。
限制与注意事项:单个一次性表格不要用工厂,直接用 useTable;禁止在渲染期间创建工厂,否则钩子配置和组件注册表不稳定;避免循环 HMR 导入,保持工厂依赖图无环;默认模块级上下文共享,只有真正嵌套不同表格设置时才用 createTableHookContexts 创建作用域上下文,否则嵌套 provider 可能静默解析到内层表格。createTableHookContexts 返回的钩子只知 TFeatures,适合无法导入完整工厂的模块。可查 node_modules 中 createTableHook.d.ts 与 createTableHookContexts.d.ts 确认返回的辅助函数、组件注册表、wrapper props 与作用域上下文类型。