我正在使用 css-modules 结合 scss 来限制 css 出血。
index.scss
.mycontainer {
:global {
.button.MuiButtonBase-root {
background: #CCCCCC;
}
}
}
MyComponent.js
import styles from './index.scss';
const MyComponent = props => {
return (
<div className={styles.mycontainer}>
<button className="button MuiButtonBase-root">Button</button>
</div>
);
};
这将产生一个唯一的父类名称,并且将由 css-loader 在 css 中生成相同的名称。
<div class="MyComponent__mycontainer-33ds2d3">
<button className="button MuiButtonBase-root">Button</button>
</div>
我不知道输出格式是什么,但会类似于MyComponent__mycontainer-33ds2d3,这将确保这些样式不会溢出,反之亦然。
用cssModules: true添加css-loader
const autoPrefixer = require('autoprefixer');
const postcssNesting = require('postcss-nested');
{
test: /src\/(.*)\.(scss)$/,
use: [
{
loader: 'style-loader',
},
{
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[name]__[local]--[hash:base64:5]',
},
},
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: () => [autoPrefixer, postcssNesting(/* pluginOptions */)],
},
},
{
loader: 'sass-loader',
},
],
},