我在我的应用程序中使用了redux-persist和redux-observable,并注意到在恢复存储状态之前,我的API调用包含在observable中。并且恢复会使用陈旧数据覆盖获取的值。 在缓存时,rootEpic如何暂停,直到持续/ REHYDRATE操作到来?
答案 0 :(得分:0)
如果您想等到发生“事件”,可以使用(...)
。例如:
.skipUntil
const action$ = new Rx.Subject();
// In your epic
action$
.skipUntil(action$.filter(({ type }) => type === 'hydrated'))
.subscribe(x => console.log(x));
// "Rehydrate"
action$.next({ type: 'hello!' });
action$.next({ type: 'hello?' });
action$.next({ type: 'any body there?' });
action$.next({ type: 'hydrated' });
action$.next({ type: 'do' });
action$.next({ type: 'you' });
action$.next({ type: 'see' });
action$.next({ type: 'me' });
action$.next({ type: 'now' });
我想,为了不将其添加到你的所有史诗中,你可以<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>
你的根史诗或其他东西:)
在以下评论中讨论后:
其他中间件也可能出现此问题。因此,在完成补水之前,不要采取任何行动可能是更好的解决方案。
答案 1 :(得分:0)
我不熟悉redux-persist,但是注意到将中间件传递给redux的顺序很重要或者可能不重要。有些中间件需要在其他中间件之前或之后。如果这听起来与您的问题相关,您可以尝试交换它们。