在ajax回调结束时使用.bind的目的是什么?

在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

在reactjs教程中,在ajax回调结束时使用
.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。