首页 > 解决方案 > NgRx 选择器 - 冷或热可观察

问题描述

我知道 ngrx 商店是基于此答案的热可观察对象:@ngrx/store 是热可观察还是冷可观察?

我的问题是选择器是热观察还是冷观察?

谢谢!

标签: angularrxjsngrx

解决方案


选择器是纯函数,不是可观察的。

您可能在询问select运算符或功能。

this.store.pipe(select(...)) // or this.store.select(...)

这基本上只是

this.store.pipe(
  map(...),
  distinctUntilChanged()
)

map并且distinctUntilChanged不要真正使可观察到的热或冷。他们仅在订阅后才订阅其源,因此只有在您订阅时数据才会流经它们。但是,如果源(例如商店)在您订阅(即热)之前从生产者那里收到项目,您将不会收到它们。

因此订阅this.store.pipe(select(...))不会告诉商店开始产生值,商店将在此之前发出值,因为它正在积极地听它的生产者(减速器和动作),但select不会听商店并且没有数据会流过它,除非你订阅。


推荐阅读