如何在史诗中获得以前的状态

Luk*_*ela 3 reactjs redux-observable rxjs6

史诗中有没有办法接收商店以前的状态?我觉得你不能,因为史诗站在Action -> Reducer -> Epic队列的末尾。

记住:当一个 Epic 收到一个动作时,它已经通过你的减速器运行并且状态更新了。

但也许有人会为我的问题提出一些解决方案:

我有一个处理下载 json 的史诗,然后将其存储在商店中。我认为另一部将检查已更改内容的史诗会很好地发送“新项目”通知,但为此我需要在商店更改之前访问状态:) 也许我应该在同一个史诗中执行此操作?

Way*_*neC 7

如果您正在使用redux-observable > 1.0,则可以pairwisestate$流上使用运算符。

例如:

const testEpic = (action$, state$) => {
  // Observable of [oldState, currentState)]
  const statePairs$ = state$.pipe(pairwise());
  return action$.pipe(
    ofType('TEST_ACTION'),
    withLatestFrom(statePairs$),
    map(([action, [ oldState, newState ]]) => { ..... })    
  );
}            
Run Code Online (Sandbox Code Playgroud)