【发布时间】:2019-07-18 12:28:12
【问题描述】:
我正在使用 Angular 7 和 NgRx。我创建了一个选择器来使用filter 从存储中获取一些数据,但是当存储中的任何内容发生更改时,此选择器会发出,即使它与我的选择器无关。
我已经创建了我的问题的演示。这是我的选择器:
export const getMyArrayFilter = createSelector(
getCounterState,
state => state.myArray.filter(x => x === 'new Item')
);
我在这里使用我的getMyArrayFilter 选择器:
this.store.pipe(select(fromRoot.getMyArrayFilter)).subscribe(x => console.log(x));
但如前所述,此selector 将在状态发生任何变化时发出。
请查看this StackBlitz 演示。
如果您尝试单击“将项目添加到数组”或“-”或“+”按钮,那么我的 getMyArrayFilter 将发出,并每次登录到控制台。我的选择器不应该只在我的状态发生变化时发出myArray 的值吗?
我查看了this SOF 问题,其中提到使用distinctUntilChanged,但这似乎对我不起作用。
【问题讨论】:
-
正常的选择器会在 store 发生变化时发出新的值。我不明白你的问题是什么
-
@TonyNgo 我的选择器不应该只在
myArray我的状态发生变化时才发出值吗? -
选择器会在有任何变化时发出值。在您的代码中,您调用了 3 次
fromRoot.getCount(),因此它将返回 3 次数据
标签: javascript angular rxjs ngrx