ingred-ui
ingred-ui copied to clipboard
<DataTable />のonSelectRowsChangeの参照が変わると無限レンダリングする
const [selectedRowIds, setSelectedRowIds] = React.useState<Set<number>>(
new Set<number>(),
);
const onHandleSelectRowsChange = (rowIds: number[]) => {
setSelectedRowIds(new Set<number>(rowIds));
};
return (
<DataTable
onSelectRowsChange={onHandleSelectRowsChange}
/>
)
-
<DataTable />
内部のuseEffect
でonSelectRowsChange()
が発火 -
selectedRowIds
が変更される - 再レンダリングの影響で
onHandleSelectRowsChange
の参照が変わる - 1に戻る
利用側でuseCallback()
を使えば済む話だが、使わなくても無問題な実装にしたい。
そもそも<DataTable />でstateを持たないように努めれば良い気もしている(選択された項目に関しては
https://github.com/voyagegroup/ingred-ui/issues/182 で解決できる
https://github.com/voyagegroup/ingred-ui/pull/1120 で解決できていそうなので close する。 リリースはまだ。