对于我的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,无法优化