diff --git a/packages/web/src/components/gridView.tsx b/packages/web/src/components/gridView.tsx index f26c0a78ed..d5f0f905fb 100644 --- a/packages/web/src/components/gridView.tsx +++ b/packages/web/src/components/gridView.tsx @@ -38,15 +38,18 @@ export type GridViewProps = Omit, 'render'> & { }; export function GridView(model: GridViewProps) { - function offsets() { + const [offsets, setOffsets] = React.useState([]); + + React.useEffect(() => { const offsets: number[] = []; for (let i = 0; i < model.columns.length - 1; ++i) { const column = model.columns[i]; offsets[i] = (offsets[i - 1] || 0) + model.columnWidths.get(column)!; } - return offsets; - } - function setOffsets(offsets: number[]) { + setOffsets(offsets); + }, [model.columns, model.columnWidths]); + + function updateWidths(offsets: number[]) { const widths = new Map(model.columnWidths.entries()); for (let i = 0; i < offsets.length; ++i) { const width = offsets[i] - (offsets[i - 1] || 0); @@ -63,8 +66,8 @@ export function GridView(model: GridViewProps) { return