#angular #ngrx #ngrx-store
#angular #ngrx #ngrx-хранилище
Вопрос:
В настоящее время я сталкиваюсь со странным поведением моего хранилища. У меня есть массив как свойство моего хранилища, куда я хочу добавить элемент при отправке действия. Элемент добавлен правильно, но не как новый элемент в массиве, а как единственный элемент в массиве, потому что массив в состоянии всегда пуст.
например, initalState:
stopps: []
добавление первой остановки с идентификатором: 1:
stopps: [{ id: 1 }]
добавление второго stopp с идентификатором: 2:
stopps: [{ id: 2 }]
Мой редуктор выглядит так:
const umdispoReducer = createReducer(
initialUmdispoState,
on(UmdispoActions.addStopp, (state, {stopp}) => ({...state, stopps: [...state.stopps, stopp]}))
);
Я уже консоль.зарегистрировал состояние и смог увидеть, что массив stopps всегда пуст при добавлении нового stopp. У кого-нибудь есть идеи, почему это так?
Мое состояние:
export interface State {
loading: boolean;
stopps: DispoStopp[];
sourceTour: Tour;
}
и начальное состояние:
export const initialUmdispoState: State = {
loading: false,
stopps: [],
sourceTour: null
};
редуктор:
export function reducer(state: State | undefined, action: Action): State {
return umdispoReducer(initialUmdispoState, action);
}
Похоже, что в моем хранилище всегда есть начальное состояние. Само состояние является состоянием функционального модуля
// РЕДАКТИРОВАТЬ: обнаружена моя ошибка. Смотрите мой ответ для решения
Ответ №1:
Ну, я каждый раз переходил в исходное состояние в редуктор
НЕПРАВИЛЬНО:
export function reducer(state: State | undefined, action: Action): State {
return umdispoReducer(initialUmdispoState, action);
}
ПРАВИЛЬНО:
export function reducer(state: State | undefined, action: Action): State {
return umdispoReducer(state, action);
}