为什么更改为非箭头功能的组成式缩影使热重新加载再次起作用



对于我的React本机应用中的一个屏幕,热重新加载不起作用。我发现解决方案是更改此

componentDidMount = () => {
  <...do stuff with this.props...>
}

到这个

componentDidMount() {
  <...do stuff with this.props...>
}

所以我所做的就是将componentDidMount从箭头函数更改为非箭头函数。所以我的问题是:

为什么将其更改为非箭头功能使热重新加载再次工作?我知道使其成为非箭头函数意味着,如果从某些其他上下文调用该函数,则this的值将被重新限制为调用该函数的上下文,而使用箭头功能,它将始终是绑定到定义的组件。但是,这如何影响热重新加载?热重新加载是否导致componentDidMount从不同的上下文中被调用,而this会得到重新结合?如果是这样,那将如何影响热重新加载?

谢谢!

update

一些用户询问这是(ES6对象中的方法:使用箭头函数)还是(箭头函数vs函数声明/表达式:它们是否等效/可交换?)

这不是其中任何一个的重复。请注意,我确实概述了箭头和非箭头功能之间的差异。我的问题是这些差异如何适用于热重新加载。

我认为当方法被称为

componentDidMount () {
   <... do stuff with this.props ...>
}

它使解释器能够优化代码,因为它是类方法 - 它不属于类本身,但不会从对象变为对象。

ie有一个A类和方法B-在A类方法B的所有实例中,B相同,优化器可以看到并优化它

当该方法称为

componentDidMount = () => {
   <... do stuff with this.props ...>
}

它实际上为每个实例a创建了一种方法,因此优化器看到不同的方法b,无法优化

相关内容

  • 没有找到相关文章

最新更新