官網原話: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使用