现状
- React官方推荐的CSS写法是CSS in JS
- CSS in JS的写法,在开发上就不是很友好,而且有伪类处理复杂,动画不好写等问题
- 配置好webpack 的 css-loader 就能愉快的使用Sass
- 为了避免全局污染,一般会约定每个样式文件只能有一个顶级类(DOM的class属性)
React项目里使用Sass并引用JS变量的方法
引用JS变量在CSS in JS里并不稀奇,但是在Sass里要怎么做呢
- 把变量写入一个文件:
1 | // src/styles/variables.js |
在Webpack添加配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22// webpack.config.js
const styleVariables = require('src/styles/variables');
// ...
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader?sourceMap&minimize',
{
loader: 'sass-loader',
options: {
data: Object.keys(styleVariables)
.map(key => `\$${key}: ${styleVariables[key]};`)
.join('\n'),
sourceMap: true,
sourceMapContents: true
}
}
]
}
//...之后在scss文件里就可以直接引用变量:
1
2
3
4// page.scss
.button {
background: $primary-color;
}