From 7a9702ed5742f1fe711f824066217db4aba95545 Mon Sep 17 00:00:00 2001 From: Eric Bower Date: Thu, 14 Dec 2023 12:47:04 -0500 Subject: [PATCH] fix(slice): properly memoize loader selectors --- store/slice/loader.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/store/slice/loader.ts b/store/slice/loader.ts index dfcb4f7..52a4715 100644 --- a/store/slice/loader.ts +++ b/store/slice/loader.ts @@ -85,10 +85,11 @@ function loaderSelectors< { ids }: PropIds, ): LoaderState[] => ids.map((id) => defaultLoader(data[id])).filter(excludesFalse); - const selectById = (state: S, { id }: PropId): LoaderState => { - const data = selectTable(state); - return defaultLoader(findById(data, { id })) || empty; - }; + const selectById = createSelector( + selectTable, + (_: S, p: PropId) => p.id, + (loaders, id): LoaderState => findById(loaders, { id }), + ); return { findById, @@ -101,8 +102,8 @@ function loaderSelectors< selectById, selectByIds: createSelector( selectTable, - (_: S, p: PropIds) => p, - findByIds, + (_: S, p: PropIds) => p.ids, + (loaders, ids) => findByIds(loaders, { ids }), ), }; }