为什么在这个@ngrx效果示例中需要集合缩减器?

时间:2017-06-21 22:43:18

标签: ngrx ngrx-effects ngrx-store

@ngrx effects示例中使用了四个减速器,即(1)书籍(2)集合(3)布局和(4)搜索。我不明白为什么这里需要collection缩减器,因为books缩减器已经在addremove操作后反映了集合的状态。我看到使用collection缩减器仅跟踪loadingloaded状态。

查看使用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]);
});

1 个答案:

答案 0 :(得分:0)

从用户的图书集中添加或删除图书后,图书状态并不反映收藏状态。

使用redux devtools这第一张图片显示我的书籍状态有2本书,收藏状态有2本书:

GD library

删除其中一本书后,您可以看到书籍状态保持不变,而该集合现在只有一个ID。

Two books in collection