我遇到了React的问题而且不知道为什么,但React并没有在呈现的HTML代码中附加属性<div>test</div>
。我在body中导入css文件,在react脚本中导入样式,编写className属性等。
页面上的结果将是没有类的阻止 - App.js
在import React, {Component} from 'react';
import styles from '../assets/main.css';
export default class App extends Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<div className={styles.test}>test</div>
</div>
);
}
}
main.css
在.test {
color: red;
}
const HTMLWebpackPlugin = require('html-webpack-plugin');
const HTMLWebpackPluginConfig = new HTMLWebpackPlugin({
template: __dirname + '/app/index.html',
filename: 'index.html',
inject: 'body'
});
const webpack = require('webpack');
module.exports = {
entry: [
'react-hot-loader/patch',
__dirname + '/app/index.js'
],
devServer: {
hot: true
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /\.css$/,
loader: "style-loader!css-loader"
}
]
},
output: {
filename: 'transformed.js',
path: __dirname + '/build'
},
plugins: [
HTMLWebpackPluginConfig,
new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin()
],
resolve: {
extensions: ['.js', '.jsx', '.css']
}
};
Webpack配置
{{1}}
答案 0 :(得分:1)
导入CSS样式表只会导致Webpack将其与其他JavaScript捆绑在一起。您无法将styles.test
添加为属性,也无法执行任何操作。您需要将className
指定为字符串,就像对HTML元素一样。
render() {
return (
<div>
<div className="test" >test</div>
</div>
);
}
答案 1 :(得分:1)
我认为您应该尝试在您的条目文件中导入main.css文件,即app / index.js。您不需要在className中添加{styles.test}。
import './assets/main.css';
当webpack包运行时,它将占用你所有的css。
您只需要提供相同的className:
<div>
<div className='test'>test</div>
</div>
另外,请确保已安装所有加载器,如file-loader,css-loader,url-loader,style-loader,并将它们包含在webpack.config文件中。