[搬运]让 create-react-app 支持热加载

React 官方的 create-react-app 很好用,可以轻松的构建 React 项目,但也有一些小痛点,比如对热加载的支持不好。
要让 create-react-app 支持热加载,需要做一些配置上的修改。本文搬运至 http://joshbroton.com/add-react-hot-reloading-create-react-app/
1.弹射 create-react-app 配置

npm run eject

通过该命令可以将 create-react-app 的配置弹射到当前工作目录下。

2.安装 react-hot-loader
注:这里需要安装 next 版本。

npm install --save-dev react-hot-loader@next

3.安装 babel 的 stage-x 支持

npm install --save-dev babel-parset-stage-1

4.修改 package.json 中的 babel 配置

"babel": {
  "presets": [
    "react-app",
    "stage-1"
  ],
  "plugins": [
    "react-hot-loader/babel"
  ]
},

5.修改 webpack.config.dev.js 配置文件,在入口处加上如下配置

module.exports = {
  ...
  entry: [
    'react-hot-loader/patch',
...

6.在入口文件中引入 AppContainer 组件,所有的组件都需要使用该组件包裹

import {AppContainer} from 'react-hot-loader';
const render = ( Component ) => {
    ReactDOM.render(
        <AppContainer>
            <Component />
        </AppContainer>,
        document.getElementById("root")
    );
}
render(ROOT);

if(module.hot){
    module.hot.accept(ROOT, () => {
        render(ROOT)
    });
}

这里定义了一个 render 函数,组件需要更新时直接调用 render 函数即可。
7.如何使 create-react-app 支持异步路由加载
使 create-react-app 支持路由加载,可在 webpack.config.dev.js 和 webpack.config.prod.js 做以下修改:
1)确保 output 选项中有以下配置:

...
chunkFilename: 'static/js/[name].chunk.js',
...

2)确保 plugins 中有以下配置:

...
new webpack.optimize.CommonsChunkPlugin({ name:'common', filename:'static/js/common.js'}),
...

如果是生产环境,建议 chunk 文件名加上 hash 字符串以阻止浏览器缓存:

...
new webpack.optimize.CommonsChunkPlugin({ name:'common', filename:'static/js/common.[chunkhash:8].js'}),
...

我们可以自由定制 create-react-app 的配置,只需将配置弹射(eject)出来,便可自由修改。

完。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 12,567评论 7 35
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,260评论 25 709
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 14,354评论 7 110
  • 头天作业 1.每天六点每日一抽 2.留意饮食,对自己体重的影响 吃的少,饿的程度。体重不降。 3.复原卡一张代表腰...
    天鹭阅读 1,567评论 0 0
  • 近期我想要企业资金流畅,财务富足,企业月销售额突破800万,月利润突破100万,所有众生拥有无边无量的财富,拥有像...
    lindacheng2017阅读 1,108评论 0 1

友情链接更多精彩内容