是否在所有状态更改上都执行了所有观察到的NGXS选择器?

时间:2019-08-06 15:39:04

标签: angular ngxs

即使我不更改参与这些选择器的部分状态,所有观察到的选择器也会执行。

我的状态包含3个属性:“ a”,“ b”,“ c”,一个用于更新属性“ a”的动作,所有属性的3个静态选择器。我的组件使用异步管道来订阅“ b”,并使用来自observable的订阅方法来订阅“ c”。当我调度更改“ a”的新动作时,将执行“ b”和“ c”选择器。

下面是一个示例https://stackblitz.com/edit/ngxs-simple-1fte4j?file=app%2Fapp.component.ts

我希望所有选择器都不会执行。也许我错了,这是预期的行为,但这意味着我不能在选择器中添加任何昂贵的逻辑。

1 个答案:

答案 0 :(得分:0)

这是NGXS的早期版本中的预期行为(例如StackBlitz 3.1.4中使用的行为)-选择器始终作为第一个参数传递包含状态,从而导致选择器重新-评估任何状态更改。

截至目前的最新版本(3.5)提供了Selector Options来更改此设置-请查看该文档。

另请参阅与选择器选项相关的PR and linked issues