【发布时间】:2019-09-21 08:23:52
【问题描述】:
我们如何使用 ngrx 数据的选择器的记忆能力?
如何从存储中的ngrx数据“entityCache”状态创建选择器?
谢谢
【问题讨论】:
我们如何使用 ngrx 数据的选择器的记忆能力?
如何从存储中的ngrx数据“entityCache”状态创建选择器?
谢谢
【问题讨论】:
你能澄清一下你在寻找什么样的选择器吗? EntityCollectionService 有一堆预设选择器,尽管文档并不广泛。这是source code 的“内置”选择器列表。
/** Observable of the collection as a whole */
readonly collection$: Observable<EntityCollection> | Store<EntityCollection>;
/** Observable of count of entities in the cached collection. */
readonly count$: Observable<number> | Store<number>;
/** Observable of all entities in the cached collection. */
readonly entities$: Observable<T[]> | Store<T[]>;
/** Observable of actions related to this entity type. */
readonly entityActions$: Observable<EntityAction>;
/** Observable of the map of entity keys to entities */
readonly entityMap$: Observable<Dictionary<T>> | Store<Dictionary<T>>;
/** Observable of error actions related to this entity type. */
readonly errors$: Observable<EntityAction>;
/** Observable of the filter pattern applied by the entity collection's filter function */
readonly filter$: Observable<string> | Store<string>;
/** Observable of entities in the cached collection that pass the filter function */
readonly filteredEntities$: Observable<T[]> | Store<T[]>;
/** Observable of the keys of the cached collection, in the collection's native sort order */
readonly keys$: Observable<string[] | number[]> | Store<string[] | number[]>;
/** Observable true when the collection has been loaded */
readonly loaded$: Observable<boolean> | Store<boolean>;
/** Observable true when a multi-entity query command is in progress. */
readonly loading$: Observable<boolean> | Store<boolean>;
/** ChangeState (including original values) of entities with unsaved changes */
readonly changeState$:
| Observable<ChangeStateMap<T>>
| Store<ChangeStateMap<T>>;
【讨论】:
一开始对我来说也有点混乱。选择器在 Facade Pattern 后面使用。
看看这篇文章https://medium.com/@thomasburlesonIA/ngrx-facades-better-state-management-82a04b9a1e39,它可能会帮助你更好地理解。
ngrx/data 默认使用该模式(这不是 ngrx,尽管您可以创建自己的外观,如文章中所述)。
总结
----------------- ngrx -----------------
----------------- ngrx/数据 -----------------
您可以在https://ngrx.io/guide/data/architecture-overview找到更多信息
... 您的组件还订阅了一个或多个服务的 Observable 选择器,以便反应性地处理和显示这些命令产生的实体状态更改。 ...
但是,再次从文档中看起来很混乱......
看看这张照片
来自https://slides.com/jiali/deck-5#/14,也不错。
在@bkelley 说的最后一张图中,你可以使用EntityCollectionService,它是ngrx/data中的Facade
希望有帮助
【讨论】: