史诗中是否有一种方式可以接收商店的先前状态?我觉得您无法这样做,因为史诗般站在Action -> Reducer -> Epic
队列的末尾。
记住:当Epic收到一个动作时,它已经通过你的化简器运行并且状态已更新。
但是也许有人会为我的问题提出一些解决方案:
我有一部史诗片,可以处理json,然后将其存储在商店中。我尽管那另一部将检查已更改内容的史诗将是最好的方式,以发出“新商品”通知,但是为此,我需要在商店更改之前访问状态:)也许我应该在同一史诗中执行此操作?
答案 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 ]) => ....)
);
}