我正在尝试使用 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 });
}
});
}
最佳答案
您还有另外两个选择:
success: function (result) {
// etc
}.bind(this)
安arrow function (需要 es6),它使用周围范围中的 this
:
success: (result) => {
// etc
}
关于javascript - 从不同范围访问 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773027/