Разделение большого редуктора на меньшие редукторы - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть функция редуктора (среза), называемая животными.Я хочу разделить эти редукторы на млекопитающих, птиц, рыб и т. Д. Эта часть проста, так как я могу просто использовать ActionReducerMap.

Теперь предположим, что состояние редуктора млекопитающих огромно, и я хочу разделить его на несколько меньших редукторов, например, семью кошки, собачью семью и т. Д. ActionReducerMap не возвращает редуктор и не является вложенным.Я пытался найти в Интернете решение или пример, но не смог найти.Короче, мой вопрос, как сделать многоуровневые вложенные редукторы.

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

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

Я хочу разделить редуктор млекопитающих на более мелкие редукторы.

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете составить новый редуктор с помощью функции ОбъединитьReducers из @ngrx/store, это позволит вам объединить ваши dogs и cats редукторы для 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,
});
...