📊
React+Material UIのテーブルプラグイン
経緯
- React+Material UI をベースに進んでいるプロジェクトで、下記のようなテーブルを作るということになり、プラグインを探してみました。
- 行ごとにチェックボックスがついていて、選択できる
- またヘッダーをチェックするとテーブル全体の選択状態がトグルされる
- 列の幅が可変
- 列を fixed できる
- ページングできる
- セルの中身をカスタムできる(アイコンを入れたりできる)
候補になったもの
どうだったか
React Grid
- 採用しました。要件を比較的簡単に実装することができました
- ただ、スタイルを整えるのはなかなか大変でした
- 2022/2/10追記 コメント頂いた通り。商用利用は有料とのこと。
React Table
- 1 番スター数が多かったですが、下記がネックでした
DataGrid
- 課金しないと要件が実現できなそうだったので採用せず
実装内容
ざっくり再現するとこんな感じです
下記のように、プラグインのタグをどんどん置いていけばそれっぽいテーブルができてしまいました
<Grid rows={rows} columns={gridColumns}>
<PagingState defaultCurrentPage={0} defaultPageSize={10} />
<DataTypeProvider
key="label"
for={["label"]}
formatterComponent={({ value }) => (
<Box textAlign="center" sx={{ backgroundColor: "lightBlue" }}>
{value}
</Box>
)}
/>
<SelectionState selection={selection} onSelectionChange={setSelection} />
<IntegratedPaging />
<IntegratedSelection />
<Table />
<TableColumnResizing
columnWidths={columnWidths}
onColumnWidthsChange={setColumnWidths}
/>
<TableHeaderRow />
<TableSelection showSelectAll />
<TableFixedColumns leftColumns={[TableSelection.COLUMN_TYPE, "name"]} />
<PagingPanel />
</Grid>
Discussion
React Gridは商用利用の場合は無償ではないようです。
と書かれてましたので、ライセンス購入してないのでは?と気になったため、コメントしました。
もし、ライセンスを購入済みであったり、個人利用の場合でしたら無視してください…。
ありがとうございます!
今回は個人利用だったので難を逃れましたが、私の認識が間違っていました。
記事も修正します!