【发布时间】:2016-07-05 13:19:03
【问题描述】:
抱歉标题令人困惑;如果我的某个组件上有 onClick 属性,例如以下
<Component onClick={this.doSomething()} />
根据 doSomething() 函数实际调用的内容,我经常会遇到奇怪的错误。如果 doSomething() 正在改变状态,特别是我会得到各种渲染错误。另一方面,如果我这样做
var _this = this;
<Component onClick{
function(){
_this.doSomething()
}
} />
所有错误都消失了,一切都按我的预期工作。通过将我的 onClick 属性包装在一个使其工作的匿名函数中,我到底在做什么?有没有更好的方法来做我想做的事情?
【问题讨论】:
-
你可以做
onClick={ _this.doSomething } -
@Rajesh 并非总是如此。你很有可能也需要
this.doSomething.bind(this)。 -
@BenFortune 是的,你是对的。我们可能不得不这样做。
-
我也觉得这很奇怪,您必须将“_this”定义为“this”。可能是因为在 function(){} 中,“this”指向新的上下文是另一个上下文。但是,当您将“_this”定义为 function() 外部的“this”时,您可以使用“_this”在 function() 外部保留上下文。
-
@BenFortune 一个问题,如果我在做
_this.doSomething,会不会将this关联到_this?
标签: javascript reactjs anonymous-function jsx