我试图使用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 });
}
});
}
答案 0 :(得分:1)
您还有两个选择:
success: function (result) {
// etc
}.bind(this)
arrow function(需要es6),它使用周围范围内的this
:
success: (result) => {
// etc
}