我正在使用 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));
但如前所述,此选择器
将在状态发生任何变化时发出。
请看this StackBlitz 演示。
如果您尝试单击“将项目添加到数组”或“-”或“+”按钮,那么我的 getMyArrayFilter
将发出并每次都记录到控制台。如果我的状态发生变化,我的选择器是否应该只发出值?
我看过this提到使用 distinctUntilChanged
的 SOF 问题,但这似乎对我不起作用。
最佳答案
正如 Alejandro 所指出的,这是因为 myArray
有一个新的引用。
您可以根据需要修改内存,Alex Okrushko 在他的演讲中就是这样做的 NgRx: Selectors are more powerful than you think
关于javascript - 当状态发生任何变化/选择器的内存不起作用时,NgRx 选择器会发出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57094478/