tanstack-table by casper-studios/casper-marketplace
npx skills add https://github.com/casper-studios/casper-marketplace --skill tanstack-table使用 context7 获取最新文档。使用 deepwiki 询问关于库实现的问题。
TanStack/table/tanstack/table此技能涵盖 TanStack Table 库的模式,特别是使用 meta 字段向单元格传递行为的模式。
// 1. 扩展 TableMeta 以获得类型安全
declare module '@tanstack/react-table' {
interface TableMeta<TData extends RowData> {
onEdit?: (id: string) => void;
onDelete?: (id: string) => void;
}
}
// 2. 将列定义提升到组件外部
const columnHelper = createColumnHelper<Job>();
const columns = [
columnHelper.accessor('name', {
header: 'Name',
cell: info => info.getValue(),
}),
columnHelper.display({
id: 'actions',
cell: ({ row, table }) => (
<Button onClick={() => table.options.meta?.onEdit?.(row.original.id)}>Edit</Button>
),
}),
];
// 3. 通过 meta 传递回调函数
function DataTable({ data, onEdit, onDelete }: Props) {
const table = useReactTable({
data,
columns,
getCoreRowModel: getCoreRowModel(),
meta: { onEdit, onDelete },
});
return <Table>...</Table>;
}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
列定义中的闭包会导致重新渲染:
// 不好 - 每次渲染都创建新的列数组
const columns = useMemo(() => [
{
cell: ({ row }) => (
<Button onClick={() => onEdit(row.original.id)}>Edit</Button>
),
},
], [onEdit]); // 当 onEdit 改变时失效
// 好 - 稳定的列定义,动态的 meta
const columns = [...]; // 提升的,永不改变
const table = useReactTable({
meta: { onEdit }, // 只有 meta 会改变
});
每周安装次数
107
仓库
GitHub 星标数
9
首次出现
2026年2月24日
安全审计
安装于
opencode107
github-copilot107
codex107
kimi-cli107
gemini-cli107
cursor107
Use context7 for the latest documentation. Use deepwiki to ask questions about the library's implementation.
TanStack/table/tanstack/tableThis skill covers TanStack Table library patterns with the meta field for passing behavior to cells.
// 1. Extend TableMeta for type safety
declare module '@tanstack/react-table' {
interface TableMeta<TData extends RowData> {
onEdit?: (id: string) => void;
onDelete?: (id: string) => void;
}
}
// 2. Hoist column definitions outside component
const columnHelper = createColumnHelper<Job>();
const columns = [
columnHelper.accessor('name', {
header: 'Name',
cell: info => info.getValue(),
}),
columnHelper.display({
id: 'actions',
cell: ({ row, table }) => (
<Button onClick={() => table.options.meta?.onEdit?.(row.original.id)}>Edit</Button>
),
}),
];
// 3. Pass callbacks via meta
function DataTable({ data, onEdit, onDelete }: Props) {
const table = useReactTable({
data,
columns,
getCoreRowModel: getCoreRowModel(),
meta: { onEdit, onDelete },
});
return <Table>...</Table>;
}
Closures in column definitions cause re-renders:
// Bad - new column array every render
const columns = useMemo(() => [
{
cell: ({ row }) => (
<Button onClick={() => onEdit(row.original.id)}>Edit</Button>
),
},
], [onEdit]); // Invalidates when onEdit changes
// Good - stable columns, dynamic meta
const columns = [...]; // Hoisted, never changes
const table = useReactTable({
meta: { onEdit }, // Only meta changes
});
Weekly Installs
107
Repository
GitHub Stars
9
First Seen
Feb 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode107
github-copilot107
codex107
kimi-cli107
gemini-cli107
cursor107
GSAP 框架集成指南:Vue、Svelte 等框架中 GSAP 动画最佳实践
2,700 周安装