首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ajax回调的末尾使用.bind(this)的目的?

在ajax回调的末尾使用.bind(this)的目的?
EN

Stack Overflow用户
提问于 2014-06-18 20:26:10
回答 2查看 14.6K关注 0票数 59

在reactjs教程中,在ajax回调的末尾使用.bind(this)的目的是什么?没有它,代码能正常工作吗?

代码语言:javascript
复制
        data: JSON.stringify({text: text}),
        success: function (data) {
            this.setState({data: data});
        }.bind(this),
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-18 21:03:12

它确保了回调中的this是正确的对象。参见Function.prototype.bind()

react的另一种特定选择是:

代码语言:javascript
复制
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在回调中。

票数 57
EN

Stack Overflow用户

发布于 2017-03-19 16:08:52

在ajax回调的末尾使用.bind(this)的目的是让this与您的react类相关联。换句话说,你可以添加:

代码语言:javascript
复制
var self = this;

在ajax之外,它的工作原理是一样的。你的代码等于:

代码语言:javascript
复制
var self = this;
$.ajax({
    .
    .
    data: JSON.stringify({text: text}),
    success: function (data) {
        self.setState({data: data});
    },
    .
    .
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24285581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档