TanStack Table
元 react-table
https://gyazo.com/24653994bacf7fbf72351b261b4dfbf2
TanStack Table | React Table, Solid Table, Svelte Table, Vue Table
Introduction | TanStack Table Docs
@tanstack/react-table examples - CodeSandbox
https://github.com/TanStack/table/discussions
ヘッドレス
Introduction | TanStack Table Docs
UI は提供しない、モデルだけ
const table = useReactTable(...) で定義して
table.getHeaderGroups().map(...)
able.getRowModel().rows.map(...)
などして自分で要素をレンダリングしていく
フィルタなどが簡単に実装できる
Core Objects and Types
Overview | TanStack Table Docs
Column Defs
Table
Table Data
Columns
Rows
Header Groups
Headers
Cells
マークアップする必要があるものはどれ
Column Def Types
Columns Guide | TanStack Table Docs
columnHelper 何
https://tanstack.com/table/latest/docs/guide/column-defs#column-helpers
createColumnHelper<T>() で返ってきたインスタンスを使う
メソッドは accessor, display, group だけ
Array index as an accessorKey in ColumnDef does not work · Issue #4815 · TanStack/table
helper に数字渡してもダメ、replace 呼べない
flexRender 何
カラム定義に基づいてレンダリングするくん?
header.getContext() is 何
{table, column, header } を返す
その他いろいろなオブジェクトで getContext ある
cell とかもこのコンテキストを受け取る
getCoreRowModel 何
Row Models Guide | TanStack Table Docs
getXXXRowModel
isPlaceholder とか state を何をどこまで考慮すればよいのか?
meta
ColumnDef APIs | TanStack Table Docs
ColumnMetaの概念がある、Column への追加の情報を渡したいときに使う??
cell のレンダリングの props の型どうやって書く?
v8: How to derive the Cell props type? · TanStack/table · Discussion 3875
How to pass extra props to custom cell renderer? v8 · TanStack/table · Discussion 4391
v8 What is the best way to define cell rendering using React · TanStack/table · Discussion 4184
CellContext<Data, カラムの型> を受け取る
function CellBox(props: CellContext<TData, TData[0]>) { ... } とか
行にアクセス
context.row でアクセス
row.getValue(key) とか row.original で元データに触れる(TableMode的にいいかは知らん)
subRow
React Table Expanding Example | TanStack Table Docs
元のデータ型に対してのアクセサを定義する
useReactTable({ ..., getSubRows: row => row.subRows })
グループの子要素は paddingLeft でへこましている
state みて表示整えるのは cell のレンダリング、テーブルとしてはループで深さ関係なく返ってくる
開いてる状態とかもフラットな state にある
getRowModel とかからどう読む?
無限ループ
React Infinite render loop , when passing data as undefined when table is using useSortBy and usePagination Hooks. · Issue 4240 · TanStack/table
data: result.table?.data? || [] などしていると起きがち
データがない場合に空の Array リテラル[] を渡すと毎回差分が検知され再描画され続けてしまう
定数でコンポーネント外に const emptyData = []; して
data: result.table?.data? || emptyData などする
Examples
@tanstack/react-table examples - CodeSandbox
tanstack-table-example-basic - CodeSandbox ベーシックな例
折りたたみ例
React Table Expanding Example | TanStack Table Docs
subRow の概念がある
row-expansion - CodeSandbox
tree - CodeSandbox
ツリーの見た目にする例
カラムにユニークな要素数を出す
How to get all unique values of a given columnId? · TanStack/table · Discussion 4981 まあ自前でカウントしてる
Grouping APIs | TanStack Table Docs
React Table Sub Components Example | TanStack Table Docs
折りたたみで好きな要素出す
Links
TanStack Tableこと調べ
これやる例
https://gyazo.com/46b308e9088508b54f45a07c1eef2aba
ReactでTanstack Table使っていろいろテーブルを操作してみる | DevelopersIO
カラム定義で cell の関数でフォーマット整えたり、フィルタ例
#React