.bind(this)在ajaxcallback结束的目的?

从reactjs教程,在ajaxcallback的末尾有.bind(this)的目的是什么? 没有它,代码是否正确工作?

  data: JSON.stringify({text: text}), success: function (data) { this.setState({data: data}); }.bind(this), 

它确保this将是callback中的正确对象。 请参阅Function.prototype.bind() 。

另一个特定的反应是做:

 myAjaxFunction: function(){ $.getJSON('/something', this.handleData); }, handleData: function(data){ this.setState({data: data}); } 

这是有效的,因为React为你处理组件方法的绑定。

如果你在没有绑定的情况下运行你的原代码,你会得到这样的错误: TypeError: undefined is not a function因为this === window在callback中;

或者在严格模式下: TypeError: Cannot read property 'setState' of undefined ,其中this === undefined在callback中this === undefined

.bind(this)在ajaxcallback结束时的目的是让它和你的反应类相关联。 换句话说,你可以添加:

 var self = this; 

阿贾克斯之外,它的工作原理是一样的。 您的代码等于:

 var self = this; $.ajax({ . . data: JSON.stringify({text: text}), success: function (data) { self.setState({data: data}); }, . . });