NgRedux + Angular + select 在订阅时触发
NgRedux + Angular + select triggered on subscribe
我在我的 angular 应用程序中使用 redux 已经好几个星期了,但我刚刚注意到一些关于它的事情:
当我 select 在我的商店的一部分监控变化时,让我们这样说:
在app.component.ts
的ngOnInit()中
this.ngRedux.select(s => s.counter).subscribe((counter: number) => {
console.log(counter)
});
每次我的计数器值改变时都会执行console.log(counter),没关系,这就是它应该如何工作的。
但是,当我第一次订阅时,回调也会被执行。
就是这样:
- 输入 onNgInit()
- 正在执行 select()
- 正在执行订阅()
- 正在执行我的回调
- -------- 稍后当计数器更改时:--------
- 正在执行我的回调
我的问题是我不希望我的回调在第 4 步被执行,因为商店没有改变!
我的理解有问题吗?应该那样工作吗?如果是:我可以做些什么来改变它吗?
谢谢
不幸的是,这是 .subscribe()
的标准行为。您唯一可以做的就是将 counter
的当前值与新值进行比较,并且仅在发生变化时才对其做出反应。
我在我的 angular 应用程序中使用 redux 已经好几个星期了,但我刚刚注意到一些关于它的事情:
当我 select 在我的商店的一部分监控变化时,让我们这样说:
在app.component.ts
的ngOnInit()中this.ngRedux.select(s => s.counter).subscribe((counter: number) => {
console.log(counter)
});
每次我的计数器值改变时都会执行console.log(counter),没关系,这就是它应该如何工作的。
但是,当我第一次订阅时,回调也会被执行。 就是这样:
- 输入 onNgInit()
- 正在执行 select()
- 正在执行订阅()
- 正在执行我的回调
- -------- 稍后当计数器更改时:--------
- 正在执行我的回调
我的问题是我不希望我的回调在第 4 步被执行,因为商店没有改变!
我的理解有问题吗?应该那样工作吗?如果是:我可以做些什么来改变它吗?
谢谢
不幸的是,这是 .subscribe()
的标准行为。您唯一可以做的就是将 counter
的当前值与新值进行比较,并且仅在发生变化时才对其做出反应。