Redux 为什么我的可观察对象发出的值比预期的要多,为什么auditTime是一个补丁?
我最近在这里问了一个关于可观测的问题,你们真的帮了大忙(一如既往)。现在我也遇到了类似的情况,我和我的队友正在为此绞尽脑汁 要修复的错误是:用户看到一组资产,在浏览器刷新时加载了错误的资产集。事实证明,问题的关键在于观察当前选定集合的一个特定管道。以下是相关代码:Redux 为什么我的可观察对象发出的值比预期的要多,为什么auditTime是一个补丁?,redux,rxjs,rxjs-observables,Redux,Rxjs,Rxjs Observables,我最近在这里问了一个关于可观测的问题,你们真的帮了大忙(一如既往)。现在我也遇到了类似的情况,我和我的队友正在为此绞尽脑汁 要修复的错误是:用户看到一组资产,在浏览器刷新时加载了错误的资产集。事实证明,问题的关键在于观察当前选定集合的一个特定管道。以下是相关代码: this.selectedCollection.pipe( filter((v) => !!v)).subscribe((v) => { console.log('PIPE: selected collecti
this.selectedCollection.pipe(
filter((v) => !!v)).subscribe((v) => {
console.log('PIPE: selected collection', v.collectionId);
this.store.dispatch(
// action jackson on redux
)
);
});
此处要分派的操作用于加载集合的资产。默认情况下,始终首先加载一个集合,它与用户所做的进一步选择相冲突
我还添加了console.logs在相关的reducer和effect上,以可视化行为
浏览器刷新时发生的情况如下:
收藏9-em。。。是我们不想看到的默认集合,集合9uem。。。是用户的选择,我们希望看到其资产
前五行显示了可观测数据的预期输出:
- 默认集合设置为所选集合
- 减速器“正在加载”资产
- 用户触发“更改所选集合”操作
- 所选集合值将相应地更新和发出
- 为什么会发出两次值?在其他地方可能是不合适的操作员/订阅(没有看到任何可疑的东西)
- 为什么auditTime(200)神奇地解决了这个问题
select<T>(fn: (state: any) => T): Observable<T> {
return this.state$.pipe(map(fn), distinctUntilChanged());
}
select(fn:(状态:any)=>T):可观察{
返回此.state$.pipe(映射(fn),distinctUntilChanged());
}
这有什么帮助吗?我想这是一个非常有趣的情况,如果你能在StackBlitz应用程序或类似的应用程序中重现它,我想找到解决方案(和问题)会容易得多。同时,您可能会发现有趣的内容。请包括
此的代码。selectedCollection
你好,fridoo,谢谢您的评论。我已经添加了代码。谢谢你的链接,安德烈。这一点解释得很好,比rxjs的文档要好得多,我经常发现rxjs的文档比较混乱我将思考这将如何影响手头的问题。
export const getSelectedCollection: (state: any) => CollectionsData = (state: any) =>
getCollectionsState(state)
? getCollectionsState(state).selectedCollection
: undefined;
select<T>(fn: (state: any) => T): Observable<T> {
return this.state$.pipe(map(fn), distinctUntilChanged());
}