1- import { useLayoutEffect , useRef , useState } from 'react' ;
1+ import { useLayoutEffect , useState } from 'react' ;
22
33import { clampColumnWidth , getColumnWidthForMeasurement } from '../utils' ;
44import 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