Reactjs 访问saga中的store.dispatch以与react router redux一起使用

Reactjs 访问saga中的store.dispatch以与react router redux一起使用,reactjs,react-router,react-router-redux,redux-saga,react-router-v4,Reactjs,React Router,React Router Redux,Redux Saga,React Router V4,我目前正在重构一个react+redux+saga+react router 3应用程序,以使用新的react router 4,这是由于不断的更改。在此之前,我将使用browserHistory根据一个传奇故事的结果引导到适当的路径。由于react router 4的更改,我无法再使用browserHistory 现在我合并了react router redux,基本上实现了browserHistory的功能。问题是react router redux仅在store.dispatch中工作,例

我目前正在重构一个react+redux+saga+react router 3应用程序,以使用新的react router 4,这是由于不断的更改。在此之前,我将使用browserHistory根据一个传奇故事的结果引导到适当的路径。由于react router 4的更改,我无法再使用browserHistory


现在我合并了react router redux,基本上实现了browserHistory的功能。问题是react router redux仅在store.dispatch中工作,例如store.dispatch(push('/'))。在我的传奇故事中,我似乎找不到访问商店或其调度功能的方法。关于如何在传奇故事中访问store.dispatch有什么想法吗?我知道你可以在根传奇中传递参数,但我不知道如何在我的实际传奇中检索它们

使用redux saga的
put
effect,它将redux操作发送到商店-


我需要这样做:const{error}=yield call(saveAccount)if(error){yield put(accountSaveFailed(error))}否则{yield put(dispatch(push('/details')))}put是dispatch+yield。您只需要
屈服put((push('/details'))
(其余条件保持不变)。
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 })
}