Доступ к магазину.отправка в саге для использования с react router redux


Я в настоящее время рефакторинга реакцию + обертывание + сага + реагировать-маршрутизатор 3 приложения для использования нового реагировать-маршрутизатор 4 из-за критических изменений. Прежде я бы использовал browserHistory для направления к соответствующему пути, основанному на результатах саги. Из-за изменений в react-router 4 я больше не могу использовать browserHistory.

Теперь я включил react-router-redux, чтобы по существу сделать то, что сделала browserHistory. Проблема в том, что react-router-redux работает только в магазине.отправка, напр. магазин.dispatch(push('/')). Похоже, я не могу найти способ получить доступ ни к магазину, ни к его диспетчерской функции внутри моих саг. Любые идеи о том, как получить доступ к магазину.отправка внутри саги? Я знаю, что вы можете передать аргументы в корневой саге, но я не знаю, как восстановить их в моих настоящих сагах.

1 3

1 ответ:

Используйте эффект redux-saga put, который отправляет действия redux в хранилище - docs .

import { call, put } from 'redux-saga/effects'
// ...

function* fetchProducts() {
  const products = yield call(Api.fetch, '/products')
  // create and yield a dispatch Effect
  yield put({ type: 'PRODUCTS_RECEIVED', products })
}