Skip to content

因为 React 没有Vue的Scoped,但是React又是SPA(单页面应用),所以需要一种方式来解决css的样式冲突问题,也就是把每个组件的样式做成单独的作用域,实现样式隔离。

https://message163.github.io/react-docs/css/css-modules.html

使用很简单,因为vite开箱即用,也支持你添加的预处理器,比如sass,less,stulys等,然后文件名xxx.module.[less|scss|...]

tsx
import styles from "./index.module.scss"

export default function Blue () {
    return <div className={styles.myColor}>blue</div>
}

如果想要自定义模块类名规则

tsx
defineConfig({
  css: {
    modules:{
      localsConvention: 'dashes', // 预处理css类名
      // 生成pattern,name是文件名,local是类名,然后是hash类型和长度
      generateScopedName: '[name]__[local]__[hash:base64:5]'
    },
  },
})