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),没关系,这就是它应该如何工作的。

但是,当我第一次订阅时,回调也会被执行。 就是这样:

  1. 输入 onNgInit()
  2. 正在执行 select()
  3. 正在执行订阅()
  4. 正在执行我的回调
  5. -------- 稍后当计数器更改时:--------
  6. 正在执行我的回调

我的问题是我不希望我的回调在第 4 步被执行,因为商店没有改变!

我的理解有问题吗?应该那样工作吗?如果是:我可以做些什么来改变它吗?

谢谢

不幸的是,这是 .subscribe() 的标准行为。您唯一可以做的就是将 counter 的当前值与新值进行比较,并且仅在发生变化时才对其做出反应。