0

我们如何使用 ngrx 数据的选择器的记忆能力及其能力?

如何从商店内的ngrx数据“entityCache”状态创建选择器?

谢谢

4

2 回答 2

1

对我来说,一开始也有点困惑。选择器在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

希望这有帮助

于 2020-05-20T16:26:12.167 回答
1

你能澄清一下你在寻找什么样的选择器吗?有EntityCollectionService一堆预设选择器,但文档并不广泛。这是每个源代码的“内置”选择器列表。

  /** 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>>;

于 2019-09-25T21:10:44.817 回答