热加载组件
所以这个章节就是他妈的屌。使用 React JS 和 react-hot-loader 可以让你去改变组件中的 class 代码,然后可以在 DOM 上看到实时更新了实例,没有修改他们的状态!看起来就像 CSS 更新一样,不过是换成了组件。
设置
这个设置需要你使用前面章节中介绍的 webpack-dev-server,现在我们需要去安装加载器 npm install react-hot-loader --save-dev
,然后做一点配置:
var webpack = require('webpack');
var path = require('path');
var config = {
entry: ['webpack/hot/dev-server', './app/main.js'],
output: {
path: path.resolve(__dirname, './build'),
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.js$/,
// 使用 "loaders" 属性代替 "loader"
// 然后在 "jsx" 加载器之前添加 "react-hot"
loaders: ['react-hot', 'babel']
}]
}
};
module.exports = config;
同时你也需要在你的主入口文件做一些修改,例子中,在 app/
文件夹中的 main.js 像下面那样修改:
app/main.js
// 你可能已经把你的根组件引入了
// 组件可能用了 react-router
var RootComponent = require('./RootComponent.jsx');
// 当你渲染它的时候,让它赋值给一个变量
var rootInstance = React.render(RootComponent(), document.body);
// 然后在文件的最底部复制粘帖
if (module.hot) {
require('react-hot-loader/Injection').RootInstanceProvider.injectProvider({
getRootInstances: function () {
// Help React Hot Loader figure out the root component instances on the page:
// 帮助 React Hot Loader 识别出页面中的根组件
return [rootInstance];
}
});
}
就是这么简单,在 DOM 中渲染一个组件,然后修改一些组件中的代码,它会自动渲染,却保存了已经存在了的状态,屌不屌?
可以到 react-hot-loader 了解更多。