从Redux reducer中的react-router检索参数

时间:2016-09-03 13:26:18

标签: redux react-router react-router-redux

我正在尝试在调度操作时更改URL参数。它链接到下一个" case"在实验中,并在URL中显示为整数。

我怎么想这个:
初始网址/experiment/2
调度的行动{ type: 'NEXT_CASE' }
新网址/experiment/3

研究
基于this answer(虽然大约redux-router)我知道我可以通过访问store.getState().routing来检索reducer中的当前路径/ URL。

但是我想要在我的路线中定义和解析的参数。 (我显然可以从路径中手动解析它们,但是如果路径结构发生变化,这看起来似乎不具备可扩展性并且不会出现以后的情况。)

当前解决方案
到目前为止,我最好的尝试是基于match(他们说这不是用于客户端使用):

export default store => next => (action:Action<any>) => {
  if (action.type == Types.NEXT_CASE) {
    match(
      { routes: Routes, location: store.getState().routing.locationBeforeTransitions.pathname },
      (error, redirectLocation, renderProps: any) => browserHistory.push(RouteBuilder.experiment(parseInt(renderProps.params.caseIndex) + 1))
    );
  }

  return next(action);
}

RoutesRouteBuilder定义如下:

export const RouteBuilder = {
  experiment: (caseIndex: number) => `/experiment/${ caseIndex }`
};

export const Routes = (
  <Route path="/" component={ Root }>
    <IndexRoute component={ Welcome } />
    <Route path="experiment/:caseIndex" component={ Experiment } />
  </Route>
);

问题
有没有直接的方法来检索reducer中的当前路由(已解析和命名)参数?

0 个答案:

没有答案