From e6753eda13c1fc872ff9add14d9da1847da0e1c1 Mon Sep 17 00:00:00 2001 From: Lenz Weber Date: Fri, 9 Apr 2021 17:26:43 +0200 Subject: [PATCH 1/2] eperiment: additional arguments into `selectState` --- src/entities/models.ts | 12 ++++++------ src/entities/state_selectors.ts | 17 ++++++++--------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/entities/models.ts b/src/entities/models.ts index e3cc202789..0d85f727ca 100644 --- a/src/entities/models.ts +++ b/src/entities/models.ts @@ -148,12 +148,12 @@ export interface EntityStateAdapter { /** * @public */ -export interface EntitySelectors { - selectIds: (state: V) => EntityId[] - selectEntities: (state: V) => Dictionary - selectAll: (state: V) => T[] - selectTotal: (state: V) => number - selectById: (state: V, id: EntityId) => T | undefined +export interface EntitySelectors { + selectIds: (state: V, ...args: ExtraArgs) => EntityId[] + selectEntities: (state: V, ...args: ExtraArgs) => Dictionary + selectAll: (state: V, ...args: ExtraArgs) => T[] + selectTotal: (state: V, ...args: ExtraArgs) => number + selectById: (state: V, id: EntityId, ...args: ExtraArgs) => T | undefined } /** diff --git a/src/entities/state_selectors.ts b/src/entities/state_selectors.ts index dadaaee995..9290a4f824 100644 --- a/src/entities/state_selectors.ts +++ b/src/entities/state_selectors.ts @@ -3,11 +3,11 @@ import { EntityState, EntitySelectors, Dictionary, EntityId } from './models' export function createSelectorsFactory() { function getSelectors(): EntitySelectors> - function getSelectors( - selectState: (state: V) => EntityState - ): EntitySelectors + function getSelectors( + selectState: (state: V, ...args: ExtraArgs) => EntityState + ): EntitySelectors function getSelectors( - selectState?: (state: any) => EntityState + selectState?: (state: any, ...args: any[]) => EntityState ): EntitySelectors { const selectIds = (state: any) => state.ids @@ -40,10 +40,9 @@ export function createSelectorsFactory() { } } - const selectGlobalizedEntities = createDraftSafeSelector( - selectState, - selectEntities - ) + const selectGlobalizedEntities: ( + ...args: any[] + ) => Dictionary = createDraftSafeSelector(selectState, selectEntities) return { selectIds: createDraftSafeSelector(selectState, selectIds), @@ -51,7 +50,7 @@ export function createSelectorsFactory() { selectAll: createDraftSafeSelector(selectState, selectAll), selectTotal: createDraftSafeSelector(selectState, selectTotal), selectById: createDraftSafeSelector( - selectGlobalizedEntities, + (state, _, ...args) => selectGlobalizedEntities(state, ...args), selectId, selectById ), From 3f094d3c49021d3b094cdb6bcb4a052927069af1 Mon Sep 17 00:00:00 2001 From: Lenz Weber Date: Fri, 9 Apr 2021 17:33:47 +0200 Subject: [PATCH 2/2] api --- etc/redux-toolkit.api.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/etc/redux-toolkit.api.md b/etc/redux-toolkit.api.md index 57581fd9e1..c0cdae293e 100644 --- a/etc/redux-toolkit.api.md +++ b/etc/redux-toolkit.api.md @@ -222,17 +222,17 @@ export interface EntityAdapter extends EntityStateAdapter { export type EntityId = number | string; // @public (undocumented) -export interface EntitySelectors { +export interface EntitySelectors { // (undocumented) - selectAll: (state: V) => T[]; + selectAll: (state: V, ...args: ExtraArgs) => T[]; // (undocumented) - selectById: (state: V, id: EntityId) => T | undefined; + selectById: (state: V, id: EntityId, ...args: ExtraArgs) => T | undefined; // (undocumented) - selectEntities: (state: V) => Dictionary; + selectEntities: (state: V, ...args: ExtraArgs) => Dictionary; // (undocumented) - selectIds: (state: V) => EntityId[]; + selectIds: (state: V, ...args: ExtraArgs) => EntityId[]; // (undocumented) - selectTotal: (state: V) => number; + selectTotal: (state: V, ...args: ExtraArgs) => number; } // @public (undocumented)