如何访问路由器2上的当前哈希位置?

时间:2016-03-07 12:23:02

标签: reactjs react-router

我想访问当前位置路径(例如/ home),而不使用某些比较逻辑的历史记录键。

如何从反应路由器2中的hashHistory访问它。

另外,我如何访问上一个路径?

2 个答案:

答案 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()