diff --git a/src/hooks/useFlattenRecords.ts b/src/hooks/useFlattenRecords.ts index 5dba12070..3ec8bab36 100644 --- a/src/hooks/useFlattenRecords.ts +++ b/src/hooks/useFlattenRecords.ts @@ -60,13 +60,16 @@ export default function useFlattenRecords( ) { const arr: { record: T; indent: number; index: number }[] = React.useMemo(() => { if (expandedKeys?.size) { - const temp: { record: T; indent: number; index: number }[] = []; + let temp: { record: T; indent: number; index: number }[] = []; // collect flattened record for (let i = 0; i < data?.length; i += 1) { const record = data[i]; - temp.push(...flatRecord(record, 0, childrenColumnName, expandedKeys, getRowKey, i)); + // using array.push or spread operator may cause "Maximum call stack size exceeded" exception if array size is big enough. + temp = temp.concat( + ...flatRecord(record, 0, childrenColumnName, expandedKeys, getRowKey, i), + ); } return temp;