我想知道是否可以按操作过滤 store.select 订阅(就像我们在效果中所做的那样)。请看下面的代码:
this.store
.select(mySelector)
.subscribe(obj => { . //FILTER SUBSCRIPTION BY ACTION
this.object = obj;
});
每次调度一个动作(无论哪个动作)时,每个具有 store.select.subscribe 的活动组件(未销毁且未取消订阅)都会被调用。
如果我们的应用程序有 100 个动作,则每次触发 1 个动作时,都会调用所有活动组件(未销毁或取消订阅)store.select.subscribe。(如果影响组件的状态没有改变,我知道我们不会有任何问题,因为状态仍然相同)。
我为什么要问这个问题?
有时,每当影响组件的状态发生变化时,我都需要在组件中执行一些操作。所以,每次我需要做一个 if 语句来检查对象是否已经改变。如果我有操作过滤器,则不再需要此 if 语句,因为我过滤了影响我的组件的特定操作的订阅。请参阅下面显示此 if 语句的代码:
myObject: any; //global object of my component
constructor(
private store: Store<AppState>,
) {
this.store
.select(mySelector)
.subscribe(obj => {
if(obj.id !== myObject.id) //changed{
this.myObject = obj;
doSomeActionInMyComponent()
} else {
this.myObject = obj;
}
});
}
doSomeActionInMyComponent() {
//do some action using this.myObject
}
我的想法是有道理的,还是我误解了ngrx的概念?我应该为此使用其他类似效果的东西吗?
提前致谢。