Typescript React HMR,一开始看 React Hot Loader 上面提示,说一定需要 “through Babel to transform it”,看着配置太复杂,觉得麻烦,于是放弃了
后来用了一阵子自己的 erb,本身也已经感觉到诸多不痛快,直到晓得了 tsconfig 的 target 除 “es5” 还可以有 “es6” 等多种选择,这相当于…
问题最终回到了以前写 react-boilerplate 时该怎样配置 HMR
我是想说,哪怕长期记忆好,时隔这么久,自己重新再来配,还是容易对这种配置的细节记忆上有模糊、遗漏…
所以还是趁这回,好好记笔记吧
List
- Version 4 “through Babel to transform it”
- webpack 与 webpack-dev-server 配置相关
- .babelrc — “plugins”: [“react-hot-loader/babel”]
- ts module.hot
- AppContainer
Version 4 “through Babel to transform it”
这个不用讲了,下一题
webpack 与 webpack-dev-server 配置相关
主要是几个参数意义需要弄清楚
如 webpackConfig.devServer 下 hot 与那个什么?(—hot)冲突
.babelrc — “plugins”: [“react-hot-loader/babel”]
以前配成功过,但还是没有留意:.babelrc 中需要👆的
简单讲,想要热更新同时不丢失 component state,不能忘记这条
当然前提是确保其他配置没问题
ts module.hot
详见 @types/webpack-env
AppContainer
React Hot Loader 的实现依赖两个主要的库 gaearon/react-proxy 和 gaearon/react-deep-force-update
这两个库在 babel 编译过程中侵入 React Comeponent 的编译结果和通过 React 的隐藏 api 强制刷新组件树来完美的实现保持状态的 React HMR
…
最后这步,原理可以往深了讲,但用法就是那么…
AppContainer & module.hot