gke*_*ley 5 javascript reloading reactjs react-native hot-reload
对于我的React Native应用程序中的一个屏幕,无法进行热重装。我发现解决方案是改变这一点
componentDidMount = () => {
<...do stuff with this.props...>
}
Run Code Online (Sandbox Code Playgroud)
对此
componentDidMount() {
<...do stuff with this.props...>
}
Run Code Online (Sandbox Code Playgroud)
因此,我所做的只是将componentDidMount箭头功能更改为非箭头功能。所以我的问题是:
为什么将其更改为非箭头功能会使热重装再次工作?我知道使其成为非箭头函数意味着如果从其他上下文调用该函数,则其值this将被重新绑定到调用该函数的上下文中,而使用箭头函数将始终被绑定到定义它的组件。但这如何影响热装?热重装是否会导致componentDidMount从其他上下文调用并this重新绑定?如果是这样,那将如何影响热装?
谢谢!
更新
一些用户问这是否是(ES6对象中的方法:使用箭头函数)或(箭头函数与函数声明/表达式:它们是否等效/可互换?)的重复项。
这不是这两个的重复。请注意,我确实概述了箭头功能和非箭头功能之间的区别。我的问题是这些差异如何专门应用于热重装。
我认为当一个方法被声明为
\n\ncomponentDidMount () {\n\xc2\xa0\xc2\xa0 <... do stuff with this.props ...>\n}\nRun Code Online (Sandbox Code Playgroud)\n\n它使解释器能够优化代码,因为它是一个类方法 - 它不属于类本身,但它不会因对象而异。
\n\n即有一个类 A 和方法 b - 在类 A 的所有实例中,方法 b 都是相同的,优化器可以看到它并优化它
\n\n当该方法声明为
\n\ncomponentDidMount = () => {\n\xc2\xa0\xc2\xa0 <... do stuff with this.props ...>\n}\nRun Code Online (Sandbox Code Playgroud)\n\n它实际上为每个实例 A 创建一个方法,因此优化器看到不同的方法 b 并且无法优化
\n| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |