是否所有观察到的 NGXS 选择器都在任何状态更改时执行?
Are all observed NGXS selectors executed on any state change?
即使我不更改参与这些选择器的部分状态,所有观察到的选择器也会执行。
我的状态包含 3 个属性:"a"、"b"、"c",一个更新操作 属性 "a",3 个静态选择器特性。我的组件使用异步管道订阅 "b" 并使用来自 observable 的订阅方法订阅 "c"。当我发送新操作更改 "a" 时,"b" 和 "c" 选择器将被执行。
这是一个例子https://stackblitz.com/edit/ngxs-simple-1fte4j?file=app%2Fapp.component.ts
我预计 none 个选择器会被执行。也许我错了,这是预期的行为,但这意味着我不能将任何昂贵的逻辑放入选择器中。
这是 早期 版本的 NGXS 中的预期行为(例如您的 StackBlitz 3.1.4
中使用的版本)- 选择器始终将包含状态作为第一个参数传递导致他们在任何状态变化时被重新评估。
截至目前的最新版本 (3.5) 提供 Selector Options 来更改此设置 - 请查看该文档。
另请参阅与选择器选项相关的 PR and linked issues。
即使我不更改参与这些选择器的部分状态,所有观察到的选择器也会执行。
我的状态包含 3 个属性:"a"、"b"、"c",一个更新操作 属性 "a",3 个静态选择器特性。我的组件使用异步管道订阅 "b" 并使用来自 observable 的订阅方法订阅 "c"。当我发送新操作更改 "a" 时,"b" 和 "c" 选择器将被执行。
这是一个例子https://stackblitz.com/edit/ngxs-simple-1fte4j?file=app%2Fapp.component.ts
我预计 none 个选择器会被执行。也许我错了,这是预期的行为,但这意味着我不能将任何昂贵的逻辑放入选择器中。
这是 早期 版本的 NGXS 中的预期行为(例如您的 StackBlitz 3.1.4
中使用的版本)- 选择器始终将包含状态作为第一个参数传递导致他们在任何状态变化时被重新评估。
截至目前的最新版本 (3.5) 提供 Selector Options 来更改此设置 - 请查看该文档。
另请参阅与选择器选项相关的 PR and linked issues。