mcpField
T
tanstack-table

tanstack-table

github.com/casper-studios開発15257 回インストール5 日前に更新
リポジトリ

tanstack-table について

TanStack Tableの実装パターンを解説するスキルで、特に`meta`フィールドを介してセルに動作を渡す方法を扱います。テーブルを構築する開発者向けに、型安全なメタデータや列定義の指針を示します。

主な機能

  1. 01テーブルのmeta経由で動作を渡す
  2. 02TableMetaの拡張による型安全性
  3. 03列定義の外部化
  4. 04実装ドキュメントの参照

活用シーン

  1. 01セルに編集・削除操作を追加
  2. 02クロージャによる列の再レンダリング回避
  3. 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 を使用してください。

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 を参照してください。

コメント