关于主题如何在处理程序中获取路径名称? 例如:
var routes = <Route handler={App} path="/">
<Route name="home" path="/home" handler={HomePage} />
<DefaultRoute handler={HomePage} />
</Route>
Router.run(routes, function(Handler, state) {
var params = state.params;
React.render(<Handler params={params}/>, document.body);
});
现在假设我有一个这样的组件:
class HomePage extends React.Component {
render() {
return(<div>MyComponent</div>)
}
}
如何获取当前路线名称?更具体一点,我想得到
name="home"
来自的属性
<Route name="home" path="/home" handler={HomePage} />
答案 0 :(得分:16)
在react-router 0.13之前,你可以使用this.getRoutes()
mixin Router.State
使用。
对于react-router 0.13,您也可以使用它:
var currentRoutes = this.context.router.getCurrentRoutes();
var lastRoute = currentRoutes[currentRoutes.length - 1];
console.log(lastRoute.name);
对于react-router v2.0.x,您可以使用:
this.props.routes[this.props.routes.length-1]
答案 1 :(得分:4)
v4已从代码库中删除了JS API,这意味着上述方法无法继续前进。
新方法是将道具直接传递给正在渲染的组件,就像通常使用React app中的任何其他组件一样。
Comment.objects.all()
<QuerySet [<Comment: Some comment.>, <Comment:
Second comment.>]
要在示例应用中查看此内容,请查看react-lego
的react-router-4 branch答案 2 :(得分:1)
假设我们正在谈论相同的react-router(当前版本是2.8.x),您可以直接通过this.props.route.path
访问该路由,该主页将为/home
(在HomePage
组件)。
链接到docs。
编辑:链接已更新。