访问“this"从不同的角度

Accessing "this" from a different scope

本文关键字:this quot 访问      更新时间:2023-09-26

我试图用React做一个简单的评论系统。我将注释保存在Parse中。问题是,当我从Parse检索注释时,我需要更新组件的状态,但是当我尝试这样做时,我得到一个错误"Uncaught ReferenceError: this.setState is not defined"

不工作代码

loadComments() {
    let Comment = Parse.Object.extend("Comment");
    let query = new Parse.Query(Comment);
    query.limit(15).find({
      success: function(result) {
        let data = [];
        for (var i = 0; i < result.length; i++) {
          var object = result[i];
          data.push(object.toJSON());
        }
        this.setState({ data: data });
      }
    });
}

如果我改变我的代码,它可以工作,但我认为应该有一个更好的方法。

loadComments() {
    let Comment = Parse.Object.extend("Comment");
    let query = new Parse.Query(Comment);
    let _this = this;
    query.limit(15).find({
        success: function(result) {
            let data = [];
            for (var i = 0; i < result.length; i++) {
            var object = result[i];
            data.push(object.toJSON());
            }
            _this.setState({ data: data });
        }
    });
}

您还有两个选择:

Function.prototype.bind:

success: function (result) {
    // etc
}.bind(this)

一个箭头函数(需要es6),它使用来自周围作用域的this:

success: (result) => {
    // etc
}