reactjs 中的 bind(this) 混淆

bind(this) confusion in reactjs

我正在阅读 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 绑定此 if 以便在外部调用时,this 将引用正确的对象。但是我们为什么 this.props.source 不需要它?

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

另一种保留上下文的方法是使用 arrow function(这是 es6,因此您现在需要一个转译器),它将为您进行绑定:

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