在ajax回调结束时使用.bind的目的是什么?
在reactjs教程中,在ajax回调结束时使用在ajax回调结束时使用.bind的目的是什么?,ajax,reactjs,Ajax,Reactjs,在reactjs教程中,在ajax回调结束时使用.bind(this)的目的是什么?没有它,代码能正常工作吗 data: JSON.stringify({text: text}), success: function (data) { this.setState({data: data}); }.bind(this), 它确保回调中的此对象是正确的。看 具体反应的另一种方法是: myAjaxFunction: functi
.bind(this)
的目的是什么?没有它,代码能正常工作吗
data: JSON.stringify({text: text}),
success: function (data) {
this.setState({data: data});
}.bind(this),
它确保回调中的
此
对象是正确的。看
具体反应的另一种方法是:
myAjaxFunction: function(){
$.getJSON('/something', this.handleData);
},
handleData: function(data){
this.setState({data: data});
}
这是因为React为您处理组件方法的绑定
如果在没有绑定的情况下运行原始代码,则会出现以下错误:TypeError:undefined不是函数
,因为this===window
在回调中
或者在严格模式下:
TypeError:无法读取回调中未定义的
的属性'setState',其中this===未定义的
。在ajax回调末尾绑定(this)的目的是让this
与react类相关。换句话说,您可以添加:
var self = this;
在ajax之外,它的工作原理是一样的。
您的代码等于:
var self = this;
$.ajax({
.
.
data: JSON.stringify({text: text}),
success: function (data) {
self.setState({data: data});
},
.
.
});
由于0.4中添加了自动绑定,所以“specific to React”部分是可能的:。还发现了这篇方便的文章,解释了绑定、应用和调用方法的用例-类似的东西。如果没有
.bind(this)
则this
引用在自定义函数(在reactJs组件中定义)中使用时将变为null。