React Router,从子组件访问历史对象

时间:2017-03-11 10:16:57

标签: reactjs react-router

我想在深嵌套子组件之一中使用history.listen来监听位置更改。

具有this.props.history的顶级父组件是否应该将道具一直传递给子组件?

我正在使用2.8.1 react-router

我愿意升级到更新的版本,如果它允许我轻松地做到这一点。

2 个答案:

答案 0 :(得分:1)

您可以通过获取路由器上下文获得history

import React, {PropTypes} from 'react';

class myComponent extends React.Component {
   render() {
      console.log(this.context.history);
   }
}

myComponent.contextTypes = {
   history: PropTypes.object
}

export default myComponent;

答案 1 :(得分:0)

import { withRouter } from 'react-router-dom';

class MyComponent extends React.Component {
  render() {
    // props also has match, location
    const { history } = this.props;
    ...
  }
}

export default withRouter(MyComponent);