我想访问当前位置路径(例如/ home),而不使用某些比较逻辑的历史记录键。
如何从反应路由器2中的hashHistory访问它。
另外,我如何访问上一个路径?
答案 0 :(得分:5)
您可以从路径组件的location
道具获取当前路径名。
从Route组件的this.props.location访问位置。如果 你想在树上更深入,你可以使用任何东西 您的应用程序用于获取高低的道具的约定。一 选项是自己在上下文中提供它:
// v2.0.x const RouteComponent = React.createClass({
childContextTypes:{ location:React.PropTypes.object},getChildContext(){ return {location:this.props.location}}})
看看here。
要获取当前路径,您只需使用location.pathname
。
答案 1 :(得分:1)
访问路径的一种方法是通过this.props.location
来自反应组件。
import React from 'react'
import { render } from 'react-dom'
import { browserHistory, Router, Route, Link } from 'react-router'
class Child extends React.Component {
render() {
let location = this.props.location
return (
<div>
<h1>Child Component</h1>
<p>{location.pathname}</p>
</div>
)
}
}
class App extends React.Component {
render() {
return (
<div>
{this.props.children}
</div>
)
}
}
render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<Route path="child" component={Child} />
</Route>
</Router>
), document.getElementById('example'))
另一种方法,如果您想通过历史记录收听当前位置的变化 -
import { createHistory } from 'history'
let history = createHistory()
// Listen for changes to the current location. The
// listener is called once immediately.
let unlisten = history.listen(function (location) {
console.log(location.pathname)
})
// When you're finished, stop the listener.
unlisten()