在reactjs中绑定(this)混淆

时间:2016-03-11 18:28:02

标签: javascript reactjs this bind

我正在阅读Reactjs和

 componentDidMount: function() {
    this.serverRequest = $.get(this.props.source, function (result) {
      var lastGist = result[0];
      this.setState({
        username: lastGist.owner.login,
        lastGistUrl: lastGist.html_url
      });
    }.bind(this));
  }

从我的理解为this.setState绑定此项,以便在外部调用时,this将引用正确的对象。但是为什么我们不需要this.props.source

1 个答案:

答案 0 :(得分:3)

因为this.props.source是传递给$.get的参数 - 它仍然具有正确的上下文,因为它在componentDidMount方法内执行。只有在$.get方法的回调中,上下文才会丢失,这是从jQuery lib中的某个地方执行的。

保留上下文的另一种方法是使用arrow function(这是es6,所以你现在需要一个转换器),它将为你做绑定:

$.get(this.props.source, (result) => {
  // ...
});