前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React使用css module和className多类名设置

React使用css module和className多类名设置

原创
作者头像
挥刀北上
修改2021-03-10 14:13:47
3.7K0
修改2021-03-10 14:13:47
举报
文章被收录于专栏:Node.js开发Node.js开发

最近在写react的时候碰到了一个小问题:现在css样式我通过下图这样的方式直接引进来的时候,发现会和其他组件里面相同className的会有冲突的现象。正常来说吧,是可以通过不同的组件在className前面加上不同组件的标识做区分的,但是这样感觉不舒服。写习惯了vue的,发现vue里面是可以加scoped将样式私有化,那react应该也会有类似的解决方案吧。

代码
代码

然后找了下发现有个叫做css module的。下图里框着的这刚好就是我想要的。这里是它的地址 CSS Module

css module

然后看看怎么使用。听说npm eject是个坑,还好这个也不用去eject,create-react-app 2的版本就可以直接使用了,方便快捷用起来也爽 ~

1、使用方法的话也比较简单,正常写css或者sass之类css预处理的文件,我这里用的是sass,下图:

scss文件

2、然后jsx文件这边,下图(框起来的首先是import进来,横线的是使用css文件的className):

CSS Module

注意:然后有一个需要注意的。默认文件名是以 [className].module.scss,就是需要加上.module。本来我也在弄了好久发现不生效,我就eject出来看到config文件下面有写着注释默认是需要加上的,当然如果配置的话就自己去百度看怎么配置了,我这就不写了,怎么简单怎么用~

3、上面是直接单个className的,然后正常来说肯定会有一些通过操作控制className的时候,和最常用的iconfont。多类名你发现直接逗号隔开或者空格隔开都不生效。

代码语言:javascript
复制
<div className={styles.sideInBox,styles.sideTitleBox}></div>    逗号隔开    跪

<div className={styles.sideInBox  styles.sideTitleBox}></div>      空格隔开    还是跪

<div className={[`${styles.sideInBox}`,`${styles.sideTitleBox}`].join(' ')}></div>  

jsx的{}和把className存数组里,然后join函数在中间加个空格,就拼出了下面这样啦

代码语言:javascript
复制
<div class="sideInBox sideTitleBox"></div>

希望对你有所帮助

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、使用方法的话也比较简单,正常写css或者sass之类css预处理的文件,我这里用的是sass,下图:
  • 2、然后jsx文件这边,下图(框起来的首先是import进来,横线的是使用css文件的className):
  • 3、上面是直接单个className的,然后正常来说肯定会有一些通过操作控制className的时候,和最常用的iconfont。多类名你发现直接逗号隔开或者空格隔开都不生效。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档