React项目中CSS样式化Root元素无效问题求助
问题根源&解决方案
嘿,我一眼就发现问题所在了——你的Webpack配置里处理CSS时只用到了css-loader,但它的能力仅仅是解析CSS里的@import和url()这类依赖引用,完全不会把解析后的样式注入到浏览器DOM中,这就是为什么你的index.css样式根本没生效的原因。
修复步骤:
- 先安装
style-loader依赖(它负责把样式注入到页面):
npm install style-loader --save-dev
- 修改Webpack配置里的CSS规则,把
style-loader加到use数组的最前面(记住Webpack的loader是从后往前执行的,所以style-loader要放在css-loader前面):
const HtmlWebPackPlugin = require("html-webpack-plugin"); module.exports = { module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, use: { loader: "babel-loader" } }, { test: /\.html$/, use: [ { loader: "html-loader" } ] }, { test: /\.css$/, // 这里添加style-loader,顺序不能乱 use: ['style-loader', 'css-loader'], }, ] }, plugins: [ new HtmlWebPackPlugin({ template: "./src/index.html", filename: "./index.html" }) ] };
- 重启你的Webpack开发服务器,现在刷新页面,
#root元素的棕色背景应该就能正常显示了!
额外小提示:
如果是生产环境部署,你可能需要用mini-css-extract-plugin替代style-loader,它会把所有CSS提取成单独的.css文件,更利于浏览器缓存,但开发环境用style-loader是最方便的,还支持样式热更新。
内容的提问来源于stack exchange,提问作者user2924127
相关产品推荐
相关产品推荐

