From 5c5e47654c57e8e8f39c976dd383f82e5f95c0bf Mon Sep 17 00:00:00 2001 From: Vladislav Redkin Date: Fri, 21 Apr 2023 15:30:22 +0300 Subject: [PATCH 1/3] use array concatenation instead of push in useFlattenRecords hook --- src/hooks/useFlattenRecords.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hooks/useFlattenRecords.ts b/src/hooks/useFlattenRecords.ts index 5dba12070..987c5909f 100644 --- a/src/hooks/useFlattenRecords.ts +++ b/src/hooks/useFlattenRecords.ts @@ -60,13 +60,15 @@ 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)); + temp = temp.concat( + ...flatRecord(record, 0, childrenColumnName, expandedKeys, getRowKey, i), + ); } return temp; From 47442087aaf2dbdc9cf23c556eef377497f5d8c7 Mon Sep 17 00:00:00 2001 From: Vladislav Redkin Date: Fri, 21 Apr 2023 15:33:11 +0300 Subject: [PATCH 2/3] use array concatenation instead of push in useFlattenRecords hook --- src/hooks/useFlattenRecords.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hooks/useFlattenRecords.ts b/src/hooks/useFlattenRecords.ts index 5dba12070..987c5909f 100644 --- a/src/hooks/useFlattenRecords.ts +++ b/src/hooks/useFlattenRecords.ts @@ -60,13 +60,15 @@ 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)); + temp = temp.concat( + ...flatRecord(record, 0, childrenColumnName, expandedKeys, getRowKey, i), + ); } return temp; From 3a5df3251bf33b43ab19c0ccfae8e314a987c3b9 Mon Sep 17 00:00:00 2001 From: Vladislav Redkin Date: Sat, 22 Apr 2023 12:35:32 +0300 Subject: [PATCH 3/3] add change description --- src/hooks/useFlattenRecords.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/useFlattenRecords.ts b/src/hooks/useFlattenRecords.ts index 987c5909f..3ec8bab36 100644 --- a/src/hooks/useFlattenRecords.ts +++ b/src/hooks/useFlattenRecords.ts @@ -66,6 +66,7 @@ export default function useFlattenRecords( for (let i = 0; i < data?.length; i += 1) { const record = data[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), );