Angular 10 / Ngrx: массив как свойство хранилища всегда пуст в предыдущем состоянии

#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);
}