Зачем нужен редуктор коллекции в этом примере эффектов @ngrx?

В эффектах @ngrx используются четыре редуктора. пример а именно (1) книги (2) коллекция (3) макет и (4) поиск. Я не понимаю, почему здесь необходим редуктор collection, потому что редуктор books уже отражает состояние коллекции после операции add или remove. Я вижу использование редуктора collection только для отслеживания состояния loading и loaded.

Посмотрите на окончательное состояние книг, создаваемых с помощью getBookCollection. getBookEntities отражает состояние коллекции после любого добавления или удаления, поэтому не нужно составлять с помощью редуктора collection.

Мне здесь не хватает логики?

export const getCollectionState = (state: State) => state.collection;

export const getCollectionLoaded = createSelector(getCollectionState, fromCollection.getLoaded);
export const getCollectionLoading = createSelector(getCollectionState, fromCollection.getLoading);
export const getCollectionBookIds = createSelector(getCollectionState, fromCollection.getIds);

export const getBookCollection = createSelector(getBookEntities, getCollectionBookIds, (entities, ids) => {
  return ids.map(id => entities[id]);
});

person wonderful world    schedule 21.06.2017    source источник
comment
как иначе получить коллекцию с сервера без добавления / удаления элементов? просто чисто получить.   -  person dee zg    schedule 22.06.2017
comment
Коллекция представляет элементы, доступные на стороне клиента.   -  person wonderful world    schedule 22.06.2017
comment
конечно, но вы, кажется, предполагаете, что эти элементы могут перейти в состояние на стороне клиента только через действия добавления / удаления. Я хочу сказать, что они также могут быть загружены в состояние, просто получая их с сервера.   -  person dee zg    schedule 22.06.2017


Ответы (1)


Состояние книг не отражает состояние коллекции после добавления или удаления книги из коллекции книг пользователя.

Используя redux devtools, это первое изображение показывает, что у меня есть 2 книги в моем состоянии книг и 2 книги в моем состоянии коллекции:

Две книги в коллекции

После удаления одной из книг вы можете увидеть, что состояние книг остается прежним, а коллекция теперь имеет только один идентификатор.

Одна книга в коллекции

person seescode    schedule 27.06.2017