从Redux reducer中的react路由器检索参数
我试图在调度操作时更改URL参数。它链接到实验中的下一个“案例”,并在URL中显示为整数。 我是如何想象的:从Redux reducer中的react路由器检索参数,redux,react-router,react-router-redux,Redux,React Router,React Router Redux,我试图在调度操作时更改URL参数。它链接到实验中的下一个“案例”,并在URL中显示为整数。 我是如何想象的: 初始URL/experiment/2 已调度操作{type:'NEXT_CASE'} 新URL/experiment/3 研究 基于(尽管关于redux路由器),我想到我可以通过访问store.getState().routing,在reducer中检索当前路径/URL 但是我想要参数,在我的路由中定义和解析。(很明显,我可以从路径手动解析它们,但如果路径结构发生变化,这似乎不可扩展,也
初始URL
/experiment/2
已调度操作
{type:'NEXT_CASE'}
新URL
/experiment/3
研究基于(尽管关于
redux路由器
),我想到我可以通过访问store.getState().routing
,在reducer中检索当前路径/URL
但是我想要参数,在我的路由中定义和解析。(很明显,我可以从路径手动解析它们,但如果路径结构发生变化,这似乎不可扩展,也不适合未来。)
当前解决方案到目前为止,我的最佳尝试基于(他们说这不是用于客户端的): 问题
有没有简单的方法可以在reducer中检索当前路由的(已解析和命名的)参数?我的答案是关于redux路由器的。redux路由器可以给你这种能力。(getState().router.params)谢谢,我实际上错过了这个区别。更新问题以反映差异,并肯定考虑使用<代码> ReDux路由器< /> >。但我认为,如何使用“常规”react router/
react router redux
组合来实现这一点仍然是相关的问题。
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);
}
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>
);