如何获得史诗般的先前状态

时间:2018-09-27 12:36:56

标签: reactjs redux-observable rxjs6

史诗中是否有一种方式可以接收商店的先前状态?我觉得您无法这样做,因为史诗般站在Action -> Reducer -> Epic队列的末尾。

  

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

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

我有一部史诗片,可以处理json,然后将其存储在商店中。我尽管那另一部将检查已更改内容的史诗将是最好的方式,以发出“新商品”通知,但是为此,我需要在商店更改之前访问状态:)也许我应该在同一史诗中执行此操作?

1 个答案:

答案 0 :(得分:4)

如果您使用的是redux-observable > 1.0,则可以在state$流上使用类似pairwise的运算符。

例如:

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 ]) => ....)
  );
}