Reactjs react路由器-通过url参数传递道具
我正在开发一个多语言和多货币的应用程序,它使用Reactjs react路由器-通过url参数传递道具,reactjs,routing,react-router,react-router-redux,Reactjs,Routing,React Router,React Router Redux,我正在开发一个多语言和多货币的应用程序,它使用react router,react router redux&react router bootstrap进行路由 目前,用户使用默认语言和货币访问应用程序,但是我希望能够在url中提供一些参数来设置语言或货币-类似于http://myapp.com/page1?lang=“fr” 我还希望能够在任何页面上使用这些参数,以便: http://myapp.com/page1?lang=“fr”和http://myapp.com/page2/examp
react router
,react router redux
&react router bootstrap
进行路由
目前,用户使用默认语言和货币访问应用程序,但是我希望能够在url中提供一些参数来设置语言或货币-类似于http://myapp.com/page1?lang=“fr”
我还希望能够在任何页面上使用这些参数,以便:
http://myapp.com/page1?lang=“fr”
和http://myapp.com/page2/example1/test?lang=“ru”
的处理方式相同。基本上,我希望路由器检查传递给它的任何url中是否存在这些参数,如果存在,则执行一个函数
我在react router
的文档中找不到任何关于这方面的明确信息,但我相信这是可能的。有人能给我指出正确的方向吗?您可以访问通过react router
传递到组件的道具。你可以看到它有一个。这样,您只需访问this.props.location.query.lang
,就可以得到查询字符串中的值
您可以签入react router项目。您可以通过
this.props.location.query.langs
来自组件内部,该组件也是由@Lucas提到的
为了更好地理解,我提供了一个工作示例
除此之外,在您的场景中,我建议您研究react路由器中可用的oneter
挂钩
let Router=ReactRouter.Router;
让RouterContext=Router.RouterContext;
让Route=ReactRouter.Route;
让Link=ReactRouter.Link;
函数重定向basedonlang(下一状态,替换){
//检查nextState.location.query
//并通过
控制台日志(“调用”);
log(nextState.location.query);
}
const仪表板=(道具)=>{
返回(
{“仪表板”}
);
}
仪表板
常量FrDashboard=(道具)=>{
返回(
仪表板
主要语言:{props.location.query.lang}
);
}
类应用程序扩展了React.Component{
render(){
返回(
应用程序
{/*添加一些链接*/}
- 仪表板
{this.props.children}
)
}
};
App.contextTypes={
路由器:React.PropTypes.func.isRequired,
};
ReactDOM.render(
,document.getElementById('test')代码>
Wow,非常全面的答案。我现在正在访问查询
参数并成功地处理它。谢谢:-)这个例子的链接是404