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) => {
// ...
});
我正在阅读 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) => {
// ...
});