0Pricing
React Academy · レッスン

列の定義と行のレンダリング

アクセサー、ヘッダー、セルレンダラーを使って列定義を設定し、データを表示します

「列の定義と行のレンダリング」はCoddyKit上の無料React Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。

ColumnDef型

TanStack Tableの各列は、ColumnDefオブジェクトで定義します。最も重要なフィールドは、accessorKey(データオブジェクトのプロパティ名)とheader(列ラベルの文字列またはレンダー関数)です。

accessorKeyはフラットなデータに適しています。複雑な値や計算値にはaccessorFnが必要です。

accessorKeyとaccessorFnの比較

データにnameやemailのような直接参照できるプロパティがある場合は、accessorKey: 'name'を使用します。firstNameとlastNameを結合するなど、値を計算する必要がある場合は、accessorFn: row => row.firstName + ' ' + row.lastNameを使用します。

行データのジェネリック型をColumnDefに指定すれば、どちらも完全に型付けされます。

cellによるカスタムセルレンダリング

ColumnDefのcellフィールドには、セルのコンテキストを受け取り、JSXを返す関数を指定できます。これにより、セル内にバッジ、ボタン、画像、その他のカスタムUIをレンダリングできます。

単純なテキスト値であればcell.renderValue()で十分です。より複雑な表示では、cell.getContext()から情報を分割代入します。

columns配列を構築する

レンダリングのたびに再作成されるのを避けるため、columnsはコンポーネントの外側で定義します。その配列をdataおよびgetCoreRowModelとともにuseReactTableへ渡します。

ColumnDefにデータ型を指定すると、TypeScriptが列の型を推論するため、accessorKeyの値で補完が利用できます。

getCoreRowModelの説明

getCoreRowModelは、@tanstack/react-tableからインポートするファクトリ関数です。その戻り値をuseReactTableに渡すことで、データ配列から基本的な行のリストを構築する方法をテーブルインスタンスに伝えます。

ソート済み、フィルタリング済み、ページネーション済みの行モデルなど、追加の行モデルは、別のモデルファクトリを渡して上に組み重ねます。

getHeaderGroupsでtheadをレンダリングする

table.getHeaderGroups()を呼び出し、その結果をmapしてtheadをレンダリングします。各ヘッダーグループにはheaders配列があり、各ヘッダーには列定義とidがあります。

flexRender(header.column.columnDef.header, header.getContext())を使用すると、文字列でもJSXを返す関数でも、ヘッダーコンテンツをレンダリングできます。

getRowModelでtbodyをレンダリングする

table.getRowModel().rowsを呼び出し、各行をmapしてtr要素を生成します。その中でrow.getVisibleCells()を呼び出し、各セルをtdにmapします。

flexRender(cell.column.columnDef.cell, cell.getContext())を使用すると、列に定義されたカスタムセルレンダラーを反映してセルの内容をレンダリングできます。

flexRenderユーティリティ

flexRenderは、Reactコンポーネント、JSXを返す関数、または単純な値のいずれかを受け取り、一貫した方法でレンダリングするヘルパーです。これにより、列定義のヘッダーやセルに、単純な文字列と完全なレンダー関数のどちらも使用できます。

この統一されたAPIにより、レンダリング前に定義の型を確認する必要がありません。

セルのコンテキストとrenderValue

cell.renderValue()は、accessorの値を文字列として整形した結果を返します。より細かく制御する場合は、cell.getContext()から、行、列、テーブルインスタンス、元の値を含む完全なレンダリングコンテキストを取得できます。

カスタムセルレンダラーは、このコンテキストを使って、単一のaccessor値を超えた関連する行データにアクセスします。

列の固定とメタデータ

各ColumnDefにはmetaフィールドがあり、isSticky: trueやalignment: 'right'のような任意のメタデータを付加できます。レンダラーではcolumn.columnDef.metaを通じてアクセスします。

列を左または右に固定するには、TanStack Tableが列オブジェクト上で列固定の状態とヘルパーメソッドを提供します。

すべてを組み合わせる

accessorKey、header、必要に応じてcellを含むColumnDef配列を定義します。data、columns、getCoreRowModelを指定してuseReactTableを呼び出します。getHeaderGroupsをmapしてtheadを、getRowModel().rowsをmapしてtbodyを生成し、flexRenderで各ヘッダーとセルをレンダリングします。

この最小限の構成で、完全に機能し、スタイルも自由に設定できるテーブルが完成します。

accessorKeyとaccessorFnの比較

TanStack Tableの列定義で、accessorKeyではなくaccessorFnを使うべきなのはどのような場合でしょうか。

レッスンのまとめ

列は、直接参照できるフィールドにはaccessorKeyを、計算値にはaccessorFnを指定したColumnDefで定義します。columnsとgetCoreRowModelをuseReactTableに渡し、ヘッダーにはgetHeaderGroupsを、ボディ行にはgetRowModel().rowsを使ってレンダリングします。

flexRenderユーティリティにより、文字列による定義と関数によるヘッダーおよびセルの定義を、同じ方法で扱えます。

よくある質問

「列の定義と行のレンダリング」レッスンは無料ですか?

はい。「列の定義と行のレンダリング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。

「列の定義と行のレンダリング」で何を学びますか?

アクセサー、ヘッダー、セルレンダラーを使って列定義を設定し、データを表示します ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

React Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「列の定義と行のレンダリング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このReact Academyレッスンでコードを書いて実行できますか?

はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. TanStack Tableの思想とヘッドレス設計
  2. 列の定義と行のレンダリング
  3. ソート、フィルタリング、ページネーション
  4. 行選択と仮想化テーブル
← React Academyに戻る