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