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

最近在写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。多类名你发现直接逗号隔开或者空格隔开都不生效。

<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函数在中间加个空格,就拼出了下面这样啦

<div class="sideInBox sideTitleBox"></div>

最后 ~ 有写错的地方麻烦可以指出来哦,也是刚接触几天然后做个整理,蟹蟹  ~ 。 ~  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,646评论 1 45
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,710评论 7 110
  • 学习流程 参考文档:入门Webpack,看这篇就够了Webpack for React 一. 简单使用webpac...
    Jason_Zeng阅读 3,178评论 2 16
  • 7月17日复盘 早起 6:01完成✅ 每日三目标 1.60s练习 ✅ 2.专业知识 ✅ 3.英语打卡✅ 每日复盘❤...
    爱尚_c631阅读 153评论 0 0
  • 一生当中有多少人需要纪念,离开的人都可以纪念吧。他是我们的社长,一次在学校共进午餐时发现他能拿起电话与他的国际友人...
    浪漫主义与现实主义阅读 227评论 0 1