Как получить предыдущее состояние в эпосе - PullRequest
0 голосов
/ 27 сентября 2018

Есть ли способ в эпопее получить предыдущее состояние магазина?Я чувствую, что вы не можете, поскольку эпопея стоит в конце очереди Action -> Reducer -> Epic.

ПОМНИТЕ: Когда Epic получает действие, оно уже прошло через ваши редукторы и состояние обновлено.

Но, возможно, кто-то предложит какое-то решение моей проблемы:

У меня есть эпос о загрузке json, который затем сохраняется в магазине.Я думаю, что другой эпос, который проверит, что изменилось, был бы хорош для отправки уведомления о «новом предмете», но для этого мне нужен доступ к состоянию до смены магазина :), может быть, я должен сделать это в том же эпосе?

1 Ответ

0 голосов
/ 02 октября 2018

Если вы используете redux-observable > 1.0, вы можете использовать оператор типа pairwise в потоке state$.

Например:

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