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

html-css028

React使用css module和className多类名设置,第1张

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

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

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

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

我想~这个都能看懂为啥这么写吧 ~ 

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

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

在工程化中,很重要的一点就是保持各组件名称的不同,对于css来说,这点尤为重要,为了不使诸多类似的样式名称混淆,一般都会使用css编译工具,对原来的名字进行统一修改替换,确保所有名字都不重叠。

默认react是直接将样式注入到页面,并没有对name进行处理,容易产生冲突,而官方没有提供具体的主流css集成方案,社区便产生了诸多解决方案,在此对不同的方案进行简要介绍和汇总。

具体使用:

具体使用:

结果

上述各种都各有优劣,按需使用即可

其他文章可以 参考