tanstack-table について
TanStack Tableの実装パターンを解説するスキルで、特に`meta`フィールドを介してセルに動作を渡す方法を扱います。テーブルを構築する開発者向けに、型安全なメタデータや列定義の指針を示します。
主な機能
- 01テーブルのmeta経由で動作を渡す
- 02TableMetaの拡張による型安全性
- 03列定義の外部化
- 04実装ドキュメントの参照
活用シーン
- 01セルに編集・削除操作を追加
- 02クロージャによる列の再レンダリング回避
- 03型安全なテーブルメタデータの定義
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ casper-studios/ casper-marketplace --skill tanstack-tableインストール後、Claude Code で/tanstack-tableを入力して読み込まれたか確認します。
同梱ファイルreferences/column-definitions.mdreferences/meta-field.md
詳細
ドキュメント
最新のドキュメントには context7 を使用してください。ライブラリの実装について質問するには deepwiki を使用してください。
- GitHub リポジトリ:https://github.com/TanStack/table
- DeepWiki リポジトリ:
TanStack/table - Context7 ライブラリ ID:
/tanstack/table
TanStack Table のパターン
このスキルでは、セルに動作を渡すための meta フィールドを使った TanStack Table ライブラリのパターンを扱います。
基本パターン:meta を使った列の外部定義
// 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>;
}
なぜクロージャーではなく meta を使うのか?
列定義でクロージャーを使うと、再レンダリングが発生します。
// 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
});
参考資料
- 列定義のパターンについては、column-definitions.md を参照してください。
- meta フィールドの型安全性については、meta-field.md を参照してください。
コメント
Markdown 対応