使用react-router时,this.context不包含路由器

时间:2016-01-29 17:33:41

标签: javascript reactjs react-router redux

我正在使用React,Redux,react-router,react-router-redux的组合。我有一个组件需要将URL推送到浏览器的历史记录。在最新版本的react-router(2.0.0-rc5)中,我有一个具有以下属性的组件:

class TestComponent extends Component {
  contextTypes: {
    router: React.PropTypes.object.isRequired
  };

  render() {
    console.log(this.context) // empty object, where is router?
  }
}

1 个答案:

答案 0 :(得分:1)

似乎是类属性初始化中的语法错误。

您有两种选择:

class TestComponent extends Component {
  static contextTypes = {
    router: PropTypes.object.isRequired
  }; // required semi-colon!
  ...
}

但是类属性仍然是测试版功能,所以看起来并不罕见:

class TestComponent extends Component {
  ...
}

TestComponent.contextTypes = {
  router: PropTypes.object.isRequired
} // semi-colon not required

还要确保在课程函数中使用parens!

testFunction() {
  // do stuff
}