angular - Angular 10 - 在订阅中调度 NGXS 动作导致无限循环
问题描述
我在订阅中使用 store.dispatch() 函数调用 NGXS 操作。在调用 store.dispatch() 函数之前,我需要来自订阅的 observable 的数据,因此我不得不等待 observable 传递数据。我不知道如何修复此代码,以防止循环。你们中有人知道如何正确处理吗?
@Select(NepoState.anlagen) myObserveable$: Observable<Anlage[]>;
ngOnInit(): void {
this.myObserveable$.subscribe((data) => {
this.store.dispatch(new ChangeAvalableFilterAction(data); // <-- this causes the loop
})
}
解决方案
您从内部调度subscribe
正在更改状态并再次触发选择器。这将调度另一个动作,你有一个循环。
您可以执行以下操作:
ngOnInit(): void {
this.myObserveable$
.pipe(
take(1) // either take just one emission, or using first()
//filter(data => /* or filter according to some condition */)
)
.subscribe((data) => {
this.store.dispatch(new ChangeAvalableFilterAction(data);
})
}
推荐阅读
- db2 - Db2 on Cloud:如何上传 CSV?
- c - 多个源文件和头文件:包括 .c 和 .h 文件
- python - 如何为 Enum 派生类扩展 Python 类属性
- monitoring - 有没有比ps更好的输出cpu使用率的方法?
- python - Flask-Limiter is not called on Flask-Restful API's method_decorators
- r - R沿x轴注释热图(时间间隔)
- java - LibGDX:单击鼠标时按键的相机移动会滞后
- reactjs - 反应状态不断重置为初始状态
- reactjs - 如何通过Link传递道具?
- sql - 如何仅显示/查询第一个逗号后的值