当先前值和当前值相同时,NgRx存储不会更改值

时间:2019-05-06 06:55:55

标签: angular angular7 ngrx ngrx-store

我正在使用NgRx商店,我订阅了该功能的存储更改。当先前值和当前值相同时,商店将不会检测到更改。

this.rootStore.pipe(select(someState.getStatus)).subscribe(someValue => {
      console.log(someValue);
    });

onLoad: someValue = 1;
OnAction 1 => onStateChanged: someValue = 2;
OnAction 2 => onStateChanged: someValue = 2; (this action is reported but do not record it with above subscription).

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

这是预期的,要记住一个选择器。仅在出于性能原因更改其输入参数时才执行。

布兰登最近在ng-conf上做了有关选择器的演讲,我强烈推荐Building Sub States w/ NgRx Selectors | Brandon Roberts

答案 1 :(得分:0)

使用select时,它在幕后的作用仅仅是map + distinctUntilChanged

因此,如果您的值是数字,并且您使用相同的数字更新商店,则不会再次触发。