@ngrx 效果示例中使用了四个化简器,即 (1) 书籍 (2) 集合 (3) 布局和 (4) 搜索。我不明白为什么collection
这里需要减速器,因为books
减速器已经反映了add
orremove
操作后集合的状态。我只看到使用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]);
});