官网原话:React Hot Loader is a plugin for Webpack that allows instantaneous live refresh without losing state while editing React components.
有人会问 webpack-dev-server 已经是热加载了,能做到只要代码修改了页面也自动更新了,为什么在 react 项目还要安装 react-hot-loader 呢?其实这两者的更新是有区别的,webpack-dev-server 的热加载是开发人员修改了代码,代码经过打包,重新刷新了整个页面。而 react-hot-loader 不会刷新整个页面,它只替换了修改的代码,做到了页面的局部刷新。
简单的讲,就是使用 react 编写代码时,能让修改的部分自动刷新。但这和自动刷新网页是不同的,因为 hot-loader 并不会刷新网页,而仅仅是替换你修改的部分,也就是上面所说的 without losing state。
下面来说说怎么来配置 react-hot-loader 。
我是通过官方的create-react-app创建的项目的修改
步骤1:
~~~
安装 react-hot-loader
npm install --save-dev react-hot-loader
~~~
步骤2:在 webpack.config.dev.js 的 entry 值里加上 react-hot-loader/patch,一定要写在entry 的最前面,如果有 babel-polyfill 就写在
babel-polyfill 的后面。
~~~
entry: [
// We ship a few polyfills by default:
require.resolve('./polyfills'),
// add react-hot-loaders by algate
require.resolve('react-hot-loader/patch'),
]
~~~
网上好多人都没有写require.resolve(),直接把上述代码放进去也ok哦
步骤3:
最后这个操作就是在页面的主入口,比如我的是 index.js 添加些代码
~~~
import App from './page/App';
import { AppContainer } from 'react-hot-loader'; // 新添加
const render = (App) => {
ReactDOM.render(
<AppContainer><App /></AppContainer>, document.getElementById('root')
);
}
render(App)
// Hot Module Replacement API
if (module.hot) {
module.hot.accept('./page/App', () => {
render(App)
})
}
~~~
大功告成,去页面实践下吧!
- 1. KanCloud快捷键
- algate.github.io的网站建设
- algate.github.io基础完善
- 如何在github上展示作品——为你的项目生成一个快速访问的网址
- Github README.md 添加图片
- git上传github常用命令
- WEB开发文档
- 工具相关文档说明
- GulpJs开发文档
- 安装Gulp详细教程
- 如何上传到github
- 服务端相关文档
- tomcat配置多域名多端口访问
- Vue遇到的那些大坑
- vue-bulid新建问题解决方案
- vue-prev功能实现方案优劣(element)
- 常用组件使用和功能实现
- 1-文件上传功能
- 2-select插件实现利弊
- 3-实现分步骤流程效果
- ES6-export与export default遇到的坑
- require.context()-route去中心化管理
- webpack.ensure(webpack代码分割)
- angular爬-跪着也要爬完
- 新建遇到的问题
- 常用angular核心知识
- React初生牛犊不怕虎
- react初次见面之泥坑深谭
- react+webpack+es6精简版HelloWorld
- create-react-app创建失败
- create-react-app不归路
- react用到的组件module
- react-hot-loader
- JavaScript成长之路
- Js进阶
- Js模块化编程:require.js的用法
- 浅谈前端架构
- Js常见问题汇总
- 浏览器渲染原理及解剖浏览器内部工作原理
- 雅虎前端优化的35条军规
- 常见问题描述-面试常问
- 前端性能优化-algate
- http状态码详解
- 作用域,闭包,面向对象
- Js基础知识
- Js基本功必须扎实
- 各个浏览器加载icon
- html特殊标签和属性的说明
- 个人资源总结
- 个人简历-绝对真实有效
- Jekyll博客创建
- Jekyll开始创建
- Jekyll文档说明
- jekyll-paginate分页问题
- HEXO博客创建
- es6新用法解析以及使用
- 神奇的三个点:...
- 几大类
- coding创建hexo
- sublime相关配置
- Atom使用