В эффектах @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]);
});