.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}); }, . . });
- JSF / PrimeFaces ajax请求上的会话超时和ViewExpiredException处理
- jQuery .load()/ .ajax()在追加后不在返回的HTML中执行javascript
- 如何使用ASP.NET和jQuery返回JSON
- jQuery调用WebService返回“无传输”错误
- X-Requested-With头是什么意思?
- 如何使用AJAX&jQuery发布一个django表单
- 如何将callback作为parameter passing给另一个函数
- XMLHttpRequest中的onload是否等于readyState == 4?
- 请求的资源错误中没有“Access-Control-Allow-Origin”标题