React中访问CurrentPath的正确方式
The correct way to access CurrentPath in React
我正在尝试了解使用 react-router (v2.4.0) 访问当前应用程序位置的 "react" 方法是什么。在新的 react-router 中断更改等之前,我能够使用
this.context.router.getCurrentLocation()
现在看来我又可以将路由器注入到组件的上下文中,但是路由器实例本身不包含 api 以获取与当前位置或查询参数等相关的任何内容。所以弹出的逻辑问题:"Am i doing this right?".
经过一些研究,我发现我正在使用的 react-router 的 Route 组件正在将位置注入到映射到该路由的组件的属性中。那太好了!但是在我的例子中,我有多层组件嵌套在映射到路由的主组件深处,所以:"Am i supposed to pass this.props.location all the way down to the component that will actually need it, or is there a more human way to make it?"
那么获取当前路由器路径、查询参数以及代码中可能需要的类似内容的正确方法是什么?我是否应该直接使用 this.props.router and/or browserHistory 对象,我是否应该找到一种方法将 this.props.location 传播到我需要它的地方,或者我是否遗漏了图片中的某些内容?
感谢您的宝贵时间!
这在一定程度上取决于您将采用的方法的应用程序结构,但是 this.props.location.query
将包含您对 react-router v2+ 中给定 Route 组件的查询参数。
例如,如果您访问了类似 /result?foo=bar&apple=orange
的内容,您可以从路线组件中找到 this.props.location.query.foo
中的 bar
和 this.props.location.query.apple
[= 中的 orange
21=]
另一方面,
this.props.params
将包含您可能映射到路线的一般动态参数,因此对于 /profile/users/:userID
之类的内容,您可以在 [=18] 中找到给定路线的用户 ID =].
您可以将它们作为 props 传递给任何需要它们的子组件,就像任何 React 组件一样,但您可能还需要考虑这些子组件是否应该是嵌套路由本身/是否可以直接访问它们自己的 this.props...
来自路由器,或者如果父级能够在传递它们之前自行处理逻辑。
官方文档提供了一些用于构建应用程序的非常好的示例和用例,值得一试:https://github.com/reactjs/react-router/blob/master/docs/Introduction.md
我正在尝试了解使用 react-router (v2.4.0) 访问当前应用程序位置的 "react" 方法是什么。在新的 react-router 中断更改等之前,我能够使用
this.context.router.getCurrentLocation()
现在看来我又可以将路由器注入到组件的上下文中,但是路由器实例本身不包含 api 以获取与当前位置或查询参数等相关的任何内容。所以弹出的逻辑问题:"Am i doing this right?".
经过一些研究,我发现我正在使用的 react-router 的 Route 组件正在将位置注入到映射到该路由的组件的属性中。那太好了!但是在我的例子中,我有多层组件嵌套在映射到路由的主组件深处,所以:"Am i supposed to pass this.props.location all the way down to the component that will actually need it, or is there a more human way to make it?"
那么获取当前路由器路径、查询参数以及代码中可能需要的类似内容的正确方法是什么?我是否应该直接使用 this.props.router and/or browserHistory 对象,我是否应该找到一种方法将 this.props.location 传播到我需要它的地方,或者我是否遗漏了图片中的某些内容?
感谢您的宝贵时间!
这在一定程度上取决于您将采用的方法的应用程序结构,但是 this.props.location.query
将包含您对 react-router v2+ 中给定 Route 组件的查询参数。
例如,如果您访问了类似 /result?foo=bar&apple=orange
的内容,您可以从路线组件中找到 this.props.location.query.foo
中的 bar
和 this.props.location.query.apple
[= 中的 orange
21=]
另一方面,
this.props.params
将包含您可能映射到路线的一般动态参数,因此对于 /profile/users/:userID
之类的内容,您可以在 [=18] 中找到给定路线的用户 ID =].
您可以将它们作为 props 传递给任何需要它们的子组件,就像任何 React 组件一样,但您可能还需要考虑这些子组件是否应该是嵌套路由本身/是否可以直接访问它们自己的 this.props...
来自路由器,或者如果父级能够在传递它们之前自行处理逻辑。
官方文档提供了一些用于构建应用程序的非常好的示例和用例,值得一试:https://github.com/reactjs/react-router/blob/master/docs/Introduction.md