Skip to content

Commit 7427f57

Browse files
authored
fix(datatable): restore state after locale initialization (#8494)
* fix(datatable): restore state after locale initialization * fix(datatable): restore state after context initialization
1 parent ab17cbd commit 7427f57

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

components/lib/datatable/DataTable.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)