我正在使用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).
我在做什么错了?
答案 0 :(得分:1)
这是预期的,要记住一个选择器。仅在出于性能原因更改其输入参数时才执行。
布兰登最近在ng-conf上做了有关选择器的演讲,我强烈推荐Building Sub States w/ NgRx Selectors | Brandon Roberts
答案 1 :(得分:0)
使用select
时,它在幕后的作用仅仅是map
+ distinctUntilChanged
。
因此,如果您的值是数字,并且您使用相同的数字更新商店,则不会再次触发。