React: facing issues using css styles in jsx
我一直在尝试在我的 React 项目中使用外部 CSS。我正在使用带有 babel 的 webpack。我已经在我的项目中配置了 css、js 和 jsx 加载器。事实上,我的项目能够成功编译,但我无法在我的 html 上应用样式。
这是我的 style-header.css 文件:
1 2 3 4 | .LogoMargin { margin-top: 10px; margin-left: 10px; } |
这是我想在其中使用 css 样式的 jsx 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import React,{Component} from 'react'; import { withStyles } from 'material-ui/styles'; import TextField from 'material-ui/TextField'; import logo from '../resources/images/logo.png'; import '../resources/style/style-header.css'; class Header extends Component { render () { return( <span> <img className="LogoMargin" src={logo} height="60" width="200" alt="logo" /> </span> <TextField id="search" label="Search" type="search" /> ) } } export default Header; |
这里是 webpack 配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | var webpack = require('webpack'); var HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { devtool: 'eval-source-map', entry: __dirname +"/app/index.js", output: { path: __dirname +"/build", filename:"bundle.js" }, module: { loaders: [ { test: /\\.(js|jsx)$/, exclude: /node_modules/, loader: 'babel-loader' }, { test: /\\.css$/, exclude: /node_modules/, loader: 'css-loader' }, { test: /\\.(gif|png|jpe?g|svg)$/i, use: [ 'file-loader', { loader: 'image-webpack-loader', options: { bypassOnDebug: true, }, }, ] } ] }, plugins: [ new HtmlWebpackPlugin({ template: __dirname +"/index.tmpl.html" }), new webpack.HotModuleReplacementPlugin() ], devServer: { historyApiFallback: true, inline: true, stats: {colors: true}, hot: true } } |
添加样式加载器来处理css。
因为你没有提供webpack版本,所以我无法提供任何代码,但我相信你会弄清楚如何使用它。
https://github.com/webpack-contrib/style-loader
好吧,我能够按照使用 style-loader 的答案所建议的那样解决这个问题,并且我对我的 webpack 配置文件进行了一些更改,如下所示:
1 2 3 4 5 6 7 8 9 10 | test: /\\.css$/, exclude: /node_modules/, use: [ { loader:"style-loader" }, { loader:"css-loader" , query: { modules: true, localIdentName: '[name]__[local]___[hash:base64:5]' }} ] |
但我想知道当我使用 Create React App 设置反应环境时,我能够在不使用 css 模块加载器的情况下使用样式。
你应该为你的 webpack 配置添加"style-loader"。您可以在数组中提供它,如下所示。另外,我在这个 repo 中有一个例子:
https://github.com/burakhanalkan/simple-react-materialui-app-starter/blob/master/webpack.config.js
1 2 3 4 5 6 7 | { test: /\\.css$/, use: [ "style-loader", "css-loader" ] }, |