近期项目中使用的react-hot-loader版本为v3,其配置方式和v1版本有比较大的区别,其配置的过程可参考官网配置,下面是按照官网的步骤操做的:react
首先你须要为你的项目安装上这个小可爱webpack
npm install --save-dev react-hot-loader
在.babelrc(babel的配置文件)加上web
{ plugins: ["react-hot-loader/babel"] }
(若是项目中已经配置了webpack的热更新,能够略过看下一步?)项目的wepack-dev-server采用inline方式配置的:npm
启东时采用inline方式,经过npm命令开启项目babel
webpack-dev-server --config config/ webpack.dev.config.js --inline --progress --colors --host 127.0.0.1 --port 8081
在webpack配置devServer的相应参数,容许热更新:app
devServer: { ... , hot: true, ..., }
plugins中加入HotModuleReplacementPlugin:dom
plugins: [ new webpack.HotModuleReplacementPlugin(),...]
在开发模式的webpack文件入口参数entry添加react-hot-loader/patch:webpack-dev-server
module.exports = { entry: [ 'babel-polyfill', 'react-hot-loader/patch', './main.js' ] }
入口文件(好比main.js中)引入react-hot-loader中的AppContainer组件,这个组件下的全部子组件都会在发生变化时,触发热更新,配置的代码以下(注意,这个组件下的子组件只能有惟一的一个?):ui
import React from 'react'; import { render } from 'react-dom'; import { AppContainer } from 'react-hot-loader'; import Upload from './components/Upload'; const renderCom = App => { render( <AppContainer> <App /> </AppContainer>, document.getElementById('app') ); } renderCom(Upload); if (module.hot) { module.hot.accept( './components/Upload',() => { const nextUpload = require('./components/Upload').default; // eslint-disable-line global-require renderCom(nextUpload); } ) }
好了,经过这些步骤,一路下来,就能够顺利的开启react-hot-loader了。有什么问题,欢迎你们一块儿讨论啦~~。eslint