【问题标题】:How is "this" defined in a callback如何在回调中定义“this”
【发布时间】:2016-10-18 08:34:47
【问题描述】:

假设一个带有 _onChange 函数的 react 组件像这样

_onChange:function () { this.setState({})};

这个 _onChange 函数作为更改事件的侦听器传递给存储。 所以当_onChange被调用时,实际上是由store调用的,store作为eventEmitter实际上使用类似代码

 handler.call(this);

调用处理程序。因此 _onChange 函数中的 this 应该是存储。但是,它在 _onChange 中解决了这个问题是组件。 因此,我想知道在调用函数时,flux 如何将_onChange 的“this”关键字设置为实际组件?

【问题讨论】:

  • 您是在询问某些东西是如何工作的,还是您的代码中存在错误?您可以轻松存储this 的引用,并在另一个函数中操作时使用它...var self = this; someFunc(self.setState...);
  • 我在问一些可行的方法,但我认为这是一个错误。我试图问的是,在 _onChange 中调用它时应该是商店而不是组件。

标签: javascript reactjs flux


【解决方案1】:

因为_onChange 是在组件而不是存储中定义的,所以this 是相对于组件实例的。当商店触发回调时,它是在您的组件的上下文中这样做的,因此this 是有效的。

根据是否声明 "use strict",此行为会有所不同。

在严格模式下,当进入执行上下文时, this 的值保持不变。

查看docs on this

【讨论】:

  • 这是因为 react.createClass 自动对方法进行了自动绑定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 2021-12-30
相关资源
最近更新 更多