访问“this"从不同的角度
Accessing "this" from a different scope
我试图用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
}
相关文章:
- $(this).prop('property') vs. this.property
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 重复“;function(){}.调用(this)"在Uglified JS中
- 这条线是什么意思"this.parentNode.firstChild.nodeName”;在jQuery H
- jqueryui:"类型错误:this.menu.element未定义"
- 为什么获胜't This Vuejs“;Hello World"示例在我的电脑上渲染
- "this.collection.each不是函数;.应该'它不是简单地说“;每个”;
- 为什么不't this replace()替换"我的“;
- 我的onsubmit=“;return onNewUserRegistrationCheck(this)"仍然
- <a href="javascript:foo(this)">通过Window,我想要标记
- 主干——哪个“这个”;是“this"
- How do i formulate "if this.children.has.not.class"
- 鼠标事件监听器&“this"
- <textarea onclick=“;this.value;this.select()">?这是什么
- "类型错误:this.options为null"在OpenLayers.Protocol.HTTP中
- 为什么是全球性的"this.function";如果没有";这个"