diff --git a/src/base/collection/hooks/useSelectableCollection.ts b/src/base/collection/hooks/useSelectableCollection.ts index f8da80bd..ac989846 100644 --- a/src/base/collection/hooks/useSelectableCollection.ts +++ b/src/base/collection/hooks/useSelectableCollection.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { useCallback, useRef, useState } from 'react'; +import { useCallback, useMemo, useRef, useState } from 'react'; export type SelectableCollectionReturnType = { selectedItemIds: Id[]; @@ -41,11 +41,17 @@ export const useSelectableCollection = (undefined); - const selectedItemIds = [...new Set(Object.values(keyToSelectedItemIds).flat())]; + const selectedItemIds = useMemo( + () => [...new Set(Object.values(keyToSelectedItemIds).flat())], + [keyToSelectedItemIds], + ); const areAllItemsSelected = selectedItemIds.length === totalCount; const areNoItemsSelected = !selectedItemIds.length; - const keySelectedItemIds = keyToSelectedItemIds[currentKey] ?? []; + const keySelectedItemIds = useMemo( + () => keyToSelectedItemIds[currentKey] ?? [], + [keyToSelectedItemIds, currentKey], + ); const areAllItemsForKeySelected = keySelectedItemIds.length === keyCount; const areNoItemsForKeySelected = keySelectedItemIds.length === 0;