fix(table chart): fix rerender bug that continuously cleared search box (#39707)

This commit is contained in:
Sam Firke
2026-04-28 07:40:56 -04:00
committed by GitHub
parent 3f28f5d012
commit 3395620b6e
3 changed files with 248 additions and 12 deletions

View File

@@ -147,7 +147,25 @@ export default typedMemo(function DataTable<D extends object>({
hooks || [],
].flat();
const columnNames = Object.keys(data?.[0] || {});
const columnNames = columns.map((column, index) => {
const normalizedColumn = column as typeof column & {
accessor?: string | ((row: D) => unknown);
columnKey?: string;
id?: string;
};
const accessorName =
typeof normalizedColumn.accessor === 'string'
? normalizedColumn.accessor
: undefined;
return (
normalizedColumn.columnKey ??
normalizedColumn.id ??
accessorName ??
String(index)
);
});
const previousColumnNames = usePrevious(columnNames);
const resultsSize = serverPagination ? rowCount : data.length;
const sortByRef = useRef([]); // cache initial `sortby` so sorting doesn't trigger page reset
@@ -237,6 +255,7 @@ export default typedMemo(function DataTable<D extends object>({
getTableSize: defaultGetTableSize,
globalFilter: defaultGlobalFilter,
sortTypes,
autoResetGlobalFilter: !isEqual(columnNames, previousColumnNames),
autoResetSortBy: !isEqual(columnNames, previousColumnNames),
manualSortBy: !!serverPagination,
...moreUseTableOptions,