Мне нужно создать пользовательское состояние, которое будет содержать данные, которые являются дочерними по отношению к родительскому состоянию, и для этого я создам редуктор для каждого дочернего состояния.
Я хочу создать дочерние редукторы, используя @ ngrx / entity , чтобы он корректно работал с angularfire2 stateChanges()
ссылка здесь .
Я решил сделать это, потому что у меня будетмного записей и, чтобы у меня была лучшая производительность и я мог искать ключ.
Я просто не знаю, как структурировать это с помощью Ngrx , и я хотел бы структурировать данные следующим образом:
index.ts
export interface AppState {
router: any;
auth: Auth,
contacts: ContactState,
users: UsersState,
config: ConfigState
};
export const reducers: ActionReducerMap<AppState> = {
router: routerReducer,
auth: authReducer,
contacts: contactsReducer,
users: usersReducer,
config: configReducer,
// Is not this allowed here? How can I structure this way?
handbooks: {
handbook: handbookReducer, // ids: [...] entities [...] <- can have 1k
anamnesis: anamnesisReducer, // ids: [...] entities [...] <- can have 1k
exams: examsReducer, // ids: [...] entities [...] <- can have 1k
ducts: ductsReducer, // ids: [...] entities [...] <- can have 1k
// ... others
}
};
reducer.ts
export const customAdapter = createEntityAdapter<any>();
export interface CustomState extends EntityState<any> { }
export const initialState: CustomState = customAdapter.getInitialState(null);
export function customReducer(
state: CustomState = initialState,
action: Action) {
switch (action.type) {
case actions.ADDED:
return customAdapter.addOne(action.payload, state)
case actions.MODIFIED:
return customAdapter.updateOne({
id: action.payload.id,
changes: action.payload
}, state)
case actions.REMOVED:
return customAdapter.removeOne(action.payload.id, state)
default:
return state;
}
}
Мне нужно структурировать в соответствии сПо логике выше, у меня будет редуктор для каждого дочернего состояния, чтобы в будущем я мог получить лучшую производительность.
Как я могу структурировать дочерние редукторы с ActionMapReducer
?Так что я могу изменить статус каждого ребенка в отдельности, не меняя всего состояния.