【问题标题】:How to get previous state in the epic如何在史诗中获得先前的状态
【发布时间】:2019-03-03 09:10:20
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: reactjs redux-observable rxjs6


    【解决方案1】:

    如果您使用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 ]]) => { ..... })    
      );
    }            
    

    【讨论】:

    • 对我来说 - oldState 和 newState 在状态中显示新值。为什么会发生这种情况?
    • @jayarjo 这很可能是由另一个史诗(很快附加)对相同的动作类型做出反应并调度一些修改状态的东西引起的。因此,您的旧/新状态可能会捕捉到这种变化。
    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多