Skip to content

Commit 2650ccb

Browse files
committed
use state instead of ref
1 parent 389c01e commit 2650ccb

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

src/hooks/useColumnWidths.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useLayoutEffect, useRef, useState } from 'react';
1+
import { useLayoutEffect, useState } from 'react';
22

33
import { clampColumnWidth, getColumnWidthForMeasurement } from '../utils';
44
import type { CalculatedColumn, StateSetter } from '../types';
@@ -17,12 +17,12 @@ export function useColumnWidths<R, SR>(
1717
onColumnResize: DataGridProps<R, SR>['onColumnResize']
1818
) {
1919
const [columnToAutoResize, setColumnToAutoResize] = useState<string | null>(null);
20-
const prevGridWidthRef = useRef(gridWidth);
20+
const [prevGridWidth, setPreviousGridWidth] = useState(gridWidth);
2121
const columnsCanFlex: boolean = columns.length === viewportColumns.length;
2222
// Allow columns to flex again when...
2323
const ignorePreviouslyMeasuredColumns: boolean =
2424
// there is enough space for columns to flex and the grid was resized
25-
columnsCanFlex && gridWidth !== prevGridWidthRef.current;
25+
columnsCanFlex && gridWidth !== prevGridWidth;
2626
const newTemplateColumns = [...templateColumns];
2727
const columnsToMeasure: string[] = [];
2828

@@ -44,12 +44,11 @@ export function useColumnWidths<R, SR>(
4444

4545
const gridTemplateColumns = newTemplateColumns.join(' ');
4646

47-
useLayoutEffect(() => {
48-
prevGridWidthRef.current = gridWidth;
49-
updateMeasuredAndResizedWidths();
50-
});
47+
useLayoutEffect(updateMeasuredAndResizedWidths);
5148

5249
function updateMeasuredAndResizedWidths() {
50+
setPreviousGridWidth(gridWidth);
51+
5352
if (columnsToMeasure.length > 0) {
5453
setMeasuredColumnWidths((measuredColumnWidths) => {
5554
const newMeasuredColumnWidths = new Map(measuredColumnWidths);

0 commit comments

Comments
 (0)