简化css模块在react中应用
npm install react-cssmodule-loader> 该程序的运作方式依赖于css的模块化功能,且文件的后缀名必须是xxx.module.less、xxx.module.sass、xxx.module.css中的一个。
这很繁琐!使用本loader可自动帮你完成这些步骤,你可仍然按照以前的习惯编码!
安装:npm i react-cssmodule-loader
webpack配置:
``js
...
{
test: /\.js(x)?$/,
use: [
{
loader: 'babel-loader',
},
{
// 注意:该插件必须在最后一个
loader: 'react-cssmodule-loader'
}
]
}
...
{
test: /\.module.(less|css|sass)$/,
loader: [
...
{
loader: 'css-loader',
options: {
// 注意:module.xxx下务必打开模块化功能
modules: true
}
},
...
]
}
...
`
然后你可以随意使用,最后总能得到你想要的结果!另外,如果你同时引入了多个模块,则后面的模块总会覆盖前面的值。 import styles1 from 'index.module.less'; // 可兼容原始代码!老的无需变更! 如果你必须使用,需注意以下情况(发生在同时导入多个css模块的情况下): 如果你的className是动态注入的,你需要使用引用,而不能直接给一个类名,例如: const props = {
`js card top-margin}>
import styles2 from 'app.module.css';
import { left, right } from 'other.module.less';
import 'main.module.sass';
import 'normal.less'
import 'normal.css'
import 'normal.sass'${left} ${right} }>
``$3
在大多数情况下,使用本loader后无需再使用以下两种方式: js`
import styles from 'index.module.less';
import { style1, style2 } from 'index.module.less';`js_jkasicidnjew
// 使用默认导入
// 假设:
// 期望得到:
// 实际情况:可能得到其它的一个类名,而不是_jkasicidnjew
// 这种可能情况的发生,取决于你是否在任何其它css模块中定义了一个和一样的类名`
import styles from 'index.module.less';`js``
// import 'index.module.less'; // 应该使用下面的形式
import styles from 'index.module.less';
className: styles.top // 正确
// className: 'top' // 错误
}