@@ -83,6 +83,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
8383 const columnSortFunction = React . useRef ( null ) ;
8484 const columnField = React . useRef ( null ) ;
8585 const filterTimeout = React . useRef ( null ) ;
86+ const restoredRef = React . useRef ( false ) ;
8687
8788 if ( props . rows !== d_rowsState && ! props . onPage ) {
8889 setRowsState ( props . rows ) ;
@@ -341,16 +342,18 @@ export const DataTable = React.forwardRef((inProps, ref) => {
341342 }
342343
343344 if ( restoredState . filters ) {
344- setD_filtersState ( cloneFilters ( restoredState . filters ) ) ;
345+ const clonedFilters = cloneFilters ( restoredState . filters ) ;
346+
347+ setD_filtersState ( clonedFilters ) ;
345348
346349 if ( props . onFilter ) {
347350 props . onFilter (
348351 createEvent ( {
349- filters : restoredState . filters
352+ filters : clonedFilters
350353 } )
351354 ) ;
352355 } else {
353- setFiltersState ( cloneFilters ( restoredState . filters ) ) ;
356+ setFiltersState ( clonedFilters ) ;
354357 }
355358 }
356359
@@ -1507,16 +1510,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
15071510 elementRef . current . setAttribute ( attributeSelector . current , '' ) ;
15081511 }
15091512
1510- //setFiltersState(cloneFilters(props.filters)); // Github #4248
15111513 setD_filtersState ( cloneFilters ( props . filters ) ) ;
1512-
1513- if ( isStateful ( ) ) {
1514- restoreState ( ) ;
1515-
1516- if ( props . resizableColumns ) {
1517- restoreColumnWidths ( ) ;
1518- }
1519- }
15201514 } ) ;
15211515
15221516 useUpdateEffect ( ( ) => {
@@ -1529,6 +1523,18 @@ export const DataTable = React.forwardRef((inProps, ref) => {
15291523 } ;
15301524 } , [ props . breakpoint ] ) ;
15311525
1526+ useUpdateEffect ( ( ) => {
1527+ if ( ! restoredRef . current && isStateful ( ) ) {
1528+ restoredRef . current = true ;
1529+
1530+ restoreState ( ) ;
1531+
1532+ if ( props . resizableColumns ) {
1533+ restoreColumnWidths ( ) ;
1534+ }
1535+ }
1536+ } , [ context ] ) ;
1537+
15321538 useUpdateEffect ( ( ) => {
15331539 const filters = cloneFilters ( props . filters ) ;
15341540
0 commit comments