将大减速器拆分为更小的减速器

Splitting big reducer into smaller reducers

我有一个叫做animals的feature reducer(切片reducer)。我想将这些 reducers 拆分为哺乳动物、鸟类、鱼类等。这部分很简单,因为我可以简单地使用 ActionReducerMap

现在假设哺乳动物的 reducer 状态很大,我想将其拆分为几个较小的 reducer,即猫的家族、狗的家族等。ActionReducerMap 不返回 reducer 并且不可嵌套。我尝试在网上搜索解决方案或示例,但找不到。简而言之,我的问题是如何制作多层嵌套的 reducer。

export interface AnimalsState{
  mammals: fromMammals.mammalsState;
  birds: fromBirds.birdsState;
}

export const reducers: ActionReducerMap<AnimalsState> = {
  mammals: fromMammals.reducer,
  birds: fromBirds.reducer
};

我想将哺乳动物减速器拆分成更小的减速器。

您可以使用 @ngrx/store 中的 combineReducers 函数组成一个新的减速器,这将允许您将 dogscats 减速器组合起来用于 mammals状态。

我在 stackblitz.

上做了一个如何使用它的简单示例

combineReducers函数的例子可以在app/store/mammals/mammals.reducer.ts:

中找到
import { combineReducers } from '@ngrx/store';

import { catsStoreName, catsReducer, CatsState } from '../cats';
import { dogsStoreName, dogsReducer, DogsState } from '../dogs';


export type MammalsState = {
  [catsStoreName]: CatsState,
  [dogsStoreName]: DogsState,
}

export const mammalsReducer = combineReducers<MammalsState>({
  [catsStoreName]: catsReducer,
  [dogsStoreName]: dogsReducer,
});