解决安装react-hot-loader后修改css/less文件不会热更新问题

webpack中启动了模块热替换,也是全网页刷新,不是局部更新!

这两天在研究react-hot-loader如何应用在react的项目中,之前webpack.dev.config.js配置中,设置了devServer: { hot: true, ... },plugins: [ new Webpack.HotModuleReplacementPlugin(), ... ],更改了js/jsx 文件都是全网页刷新,开始以为这就是热更新,且满足现状。而且修改了css/less文件后页面不会刷新,需要手动刷新样式才会生效,觉得不应该手动刷新但是也没去找原因为什么会这样【i 服了me】。

想提高开发效率,于是安装react-hot-loader,看了网上别人写的博客,以及官网后,需要配置webpack,我没做配置(其实配置了也管用,只是配置后我的eslint检验变的更严厉了),直接在项目路由文件中使用:

import { hot, setConfig } from 'react-hot-loader';  const Routes = () => {} ;  export default hot(module)(Routes);
为什么不在app.js 入口文件中使用呢?因为入口文件中使用了<Router history={history}></Router>,在入口文件中使用react-hot-loader出现警告:You cannot change <Router history>;

再说一下,安装react-hot-loader后webpack以及.babelrc没做任何配置,直接在路由文件中使用了。且生效了。

但是,修改css/less 文件后,还是需要手动刷新页面样式才会生效,此时还是不知道啥原因。后来在网上看到这篇章才然大悟使用react-hot-loader的一些问题,原来是我的webpack配置在开发环境中抽离了css(一般在生产环境中进行抽离),于是进行了修改:


使用style-loader


修改的意思是将样式文件也打包到js中,然后,然后修改了css/less 文件的样式后页面元素局部刷新了。后来发现即使不添加react-hot-loader,将css/less打包进js后,修改样式文件页面也会热更新的。

对于上面遇到的问题,主要是自己学的浅,没深入研究问题导致的,不说了,继续学习吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录第1章 webpack简介 11.1 webpack是什么? 11.2 官网地址 21.3 为什么使用 web...
    lemonzoey阅读 5,684评论 0 1
  • 1. 新建一个文件夹,命名为 webpack-cli , webpack-cli 就是你的项目名,项目名建议使用小...
    鲁大师666阅读 5,386评论 1 3
  • 咏诗思古看今朝, 粤秀书院话明珠。 霓虹披射小蛮腰, 粤志鸿儒寻鱼山。 繁华散尽如彩光, 沧海桑田回头望。 才华横...
    青果文学馆阅读 3,192评论 0 0
  • 开学第一天 领新书以及老师谈话后便早早下了课 这几天心态很静 包括规律学习生活搞得时间很满和姐妹说话少了 一种心灵...
    哦琳阅读 799评论 0 0
  • 给刘
    墨迹moji阅读 1,189评论 0 0