custom-features について
custom-features は、@tanstack/table-core にカスタム機能を実装するためのスキルです。プラグイン型、ライフサイクルフック、実行時 API、検証を案内し、宣言した動作を登録して構築済みテーブルで利用できるようにします。
主な機能
- 01動作に応じたプラグインまたはメタデータの選択
- 02FeatureMaps と実行時フックの対応付け
- 03ライフサイクルに沿ったテーブル・オブジェクト API の導入
- 04テーブル単位の可変インスタンスデータ管理
- 05tableFeatures による安定した機能登録
- 06API、状態、リセット動作の検証
活用シーン
- 01テーブルへのカスタム状態やメソッドの追加
- 02行、列、セル、ヘッダーの動作拡張
- 03実行時実装のない型宣言の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tanstack/ table --skill custom-featuresインストール後、Claude Code で/custom-featuresを入力して読み込まれたか確認します。
同梱ファイルreferences/plugin-example.md
詳細
カスタム機能を作成する
まず、core と feature architecture をお読みください。Table オブジェクトを拡張する必要がある、再利用可能な状態や動作にはプラグインを使用します。レンダラーのコールバックやアプリケーション設定には、通常、組み込みオプションと型付けされた tableMeta/columnMeta で十分です。
実装ワークフロー
- その動作が所有する状態、オプション、オブジェクトメソッドを特定します。コールバックやレンダラーのデータを渡すだけの場合は、スコープ付きメタデータの型付けを読み、代わりにメタデータを使用します。
- プラグインの型を宣言したり、ライフサイクルフックを書いたりする前に、完全なプラグインの例をお読みください。10 個すべてのパブリック FeatureMaps、API の割り当てヘルパー、ライフサイクルの実行順序、高度な行モデルマップについて説明しています。
Pluginsに機能キーを宣言します。実行時の実装が一致する FeatureMaps だけをマージしてください。宣言だけでは動作は追加されません。getInitialStateではデフォルト値の後にユーザーの状態を保持し、デフォルトオプションで状態更新関数を接続します。対応するライフサイクルフック内で、テーブルメソッドにはassignTableAPIs、オブジェクトメソッドにはassignPrototypeAPIsを使います。- 機能オブジェクトと
tableFeatures({ customFeature })の結果を安定させます。推論と合成に含めるため、tableFeaturesを通じてプラグインを登録します。 - 構築したテーブルで、公開する状態、オプション、メソッド、リセットを検証します。宣言した API はすべて実行時に存在する必要があります。リセットの動作は状態の所有者に従う必要があります。
ライフサイクルの境界
1 つのテーブルが所有する可変データには initTableInstanceData を使い、一時的な内容のクリアには resetTableInstanceData を使います。すべての機能の初期化が完了してから、各 constructTableAPIs フックが実行されます。メソッドのインストールとデータの割り当ては分けてください。
プロトタイプメソッドは、テーブルの行、列、セル、ヘッダー間で共有されます。メソッドの現在のインスタンスを通じてオブジェクトごとの値を読み取り、可変フィールドにはサポートされているインスタンスデータフックを使います。メモ化されたメソッドや高度な行モデル/キャッシュの接続を追加する前に、例にあるインストールの規則をお読みください。
よくある失敗
- 対応する実行時フックのない型は、存在しない API を公開してしまいます。
- 構築済みインスタンスを場当たり的に変更すると、機能の登録や推論される合成を迂回してしまいます。
- 拡張パターンが密度の例だけだと思い込むと、列定義やその他のパブリック FeatureMaps を見落とします。その動作に必要なマップを選んでください。高度な行モデルの宣言には、実行時のパイプライン/キャッシュの接続も必要です。
インストール済み API の確認
node_modules/@tanstack/table-core/dist/types/TableFeatures.d.ts、dist/types/ にエクスポートされている *_FeatureMap インターフェース、dist/utils.d.ts の assignTableAPIs/assignPrototypeAPIs を確認します。同等の組み込みライフサイクルシグネチャについては、dist/features/ の宣言を参照してください。