在reactjs教程中,在ajax回调的末尾使用.bind(this)
的目的是什么?没有它,代码能正常工作吗?
data: JSON.stringify({text: text}),
success: function (data) {
this.setState({data: data});
}.bind(this),
发布于 2014-06-18 21:03:12
它确保了回调中的this
是正确的对象。参见Function.prototype.bind()。
react的另一种特定选择是:
myAjaxFunction: function(){
$.getJSON('/something', this.handleData);
},
handleData: function(data){
this.setState({data: data});
}
这是因为React会为你处理组件方法的绑定。
如果你在没有绑定的情况下运行你的原始代码,你会得到这个错误:TypeError: undefined is not a function
,因为回调中有this === window
;
或者在严格模式下:TypeError: Cannot read property 'setState' of undefined
,其中this === undefined
在回调中。
发布于 2017-03-19 16:08:52
在ajax回调的末尾使用.bind(this)
的目的是让this
与您的react类相关联。换句话说,你可以添加:
var self = this;
在ajax之外,它的工作原理是一样的。你的代码等于:
var self = this;
$.ajax({
.
.
data: JSON.stringify({text: text}),
success: function (data) {
self.setState({data: data});
},
.
.
});
https://stackoverflow.com/questions/24285581
复制相似问题