热替换
By admin
一次hmr热替换失效问题 {#%E4%B8%80%E6%AC%A1hmr%E7%83%AD%E6%9B%BF%E6%8D%A2%E5%A4%B1%E6%95%88%E9%97%AE%E9%A2%98}
webpack配置 {#webpack%E9%85%8D%E7%BD%AE}
在devServer
中添加hot
项
代码配合 {#%E4%BB%A3%E7%A0%81%E9%85%8D%E5%90%88}
在webpack的entry中制定的源码中需要
这种由webpack提供的hmr方案是不需要react-hot-loader
的
以下是我遇到的一次热替换失效问题 {#%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E9%81%87%E5%88%B0%E7%9A%84%E4%B8%80%E6%AC%A1%E7%83%AD%E6%9B%BF%E6%8D%A2%E5%A4%B1%E6%95%88%E9%97%AE%E9%A2%98}
在一次进行代码优化之后,发现热替换失效,最开始没在意,认为升级webpack或loader即可修正。
经过两些天的开发工作之后按F5倍感疲惫,决定彻底解决该问题。
尝试各种依赖升级,之后与另一个项目对比发现在所有依赖与工程配置都一样的情况下,另一个项目的hmr正常工作,问题项目就是工作。
在问题项目中,非React.lazy
加载的组件都可正常hmr
。
问题集中在了路由加载,最终发现,routes
的路由数组,由于代码优化,被放到了其中一个数据store的属性中,导致hmr
失效。将routes数组全部经过react
的props
层层传递,即可使hmr
正常工作。