как обновить состояние с массивами в ngrx - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь перенести мое приложение на использование ngrx. Одной из первых функций является загрузка моего реального контента и его отображение, но у меня есть некоторые проблемы.

Я определил это в своем редукторе:

export const collectionFeatureKey = 'colecciones';

export interface CollectionsState {
  lista_creadas: Array<Collection>;
  lista_asignadas: Array<Collection>;
  lista_grupos: Array<Collection>;
}

export const initialState: CollectionsState = {
  lista_creadas: [],
  lista_asignadas : [],
  lista_grupos: []
};

Я подготовил и выполнил, получая информацию из API. ЭТО работает нормально. Но я не знаю, как присвоить значение трех массивов государству. На самом деле я делаю это:

const collectionsReducer = createReducer(
    initialState,
    on(CollectionActions.loadCollections, state => state),
    on(CollectionActions.loadCollectionsSucess,
      (state, { colecciones }) => {
        return {
          ...state,
          colecciones
        };
      }
    ),
    on(CollectionActions.loadCollectionsError, state => state),
/*...*/

Но это не работает, как ожидалось.

enter image description here

Что я делаю не так? Заранее спасибо

1 Ответ

1 голос
/ 18 марта 2020

colecciones - это объект, и вам нужно будет присвоить каждый массив массиву состояния:

   on(CollectionActions.loadCollectionsSucess,
      (state, { colecciones }) => {
        return {
          ...state,
          lista_creadas: colecciones.lista_creadas
          lista_asignadas: colecciones.lista_asignadas
          lista_grupos: colecciones.lista_asignadas
        };
      }
    ),

Для этого есть ярлык с оператором распространения:

   on(CollectionActions.loadCollectionsSucess,
      (state, { colecciones }) => {
        return {
          ...state,
          ...colecciones
        };
      }
    ),

Но поскольку ваше действие содержит полезную нагрузку, эквивалентную следующему состоянию, которое вы также можете выполнить:

  on(CollectionActions.loadCollectionsSucess,
      (state, { colecciones }) => {
        return colecciones
      }
    ),
...