react CSS Modules

前提

項(xiàng)目是采用create-react-app 搭建的腳手架工程。

背景

react 組件之間會(huì)出現(xiàn)css樣式污染的問題,vue組件之間解決此問題的方式是給<style></style>加上scoped屬性值,如何處理react樣式污染問題?

調(diào)查 (CSS Modules)

CSS模塊就是所有的類名都只有局部作用域的CSS文件。CSS Modules既不是官方標(biāo)準(zhǔn),也不是瀏覽器的特性,而是在構(gòu)建步驟(例如使用Webpack或Browserify)中對(duì)CSS類名選擇器限定作用域的一種方式(通過hash實(shí)現(xiàn)類似于命名空間的方法)。
原理:在使用CSS模塊時(shí),類名是動(dòng)態(tài)生成的,唯一的,并準(zhǔn)確對(duì)應(yīng)到源文件中的各個(gè)類的樣式。

用法

第一種用法:

編寫一個(gè) css 文件:Button.module.css (關(guān)鍵在于xxx.module.css格式)

.error {
    background-color: red;
}

組件引用

import React, { Component } from 'react';
import styles from './Button.module.css'; // 使用 CSS Modules 的方式引入

class Button extends Component {
  render() {
    // 使用方式為模塊名.類名
    return <button className={styles.error}>Error Button</button>;
  }
}

第二種用法:
1.在命令行運(yùn)行 npm run eject 命令
2.運(yùn)行完成之后,打開 config 目錄下的 webpack.config.js 文件,找到 test: cssRegex 這一行
3.在 use 屬性執(zhí)行的方法中添加 modules: true,如下圖:


image

4.react組件中的使用和第一個(gè)方式相同。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文地址:react-css-modules閱讀本文前建議了解 CSS Modules 的知識(shí)。墻裂推薦閱讀 Ca...
    梁相輝閱讀 2,361評(píng)論 1 18
  • CSS Modules 在React中寫樣式有多種方式,比較常見的有 CSS modules,這種方法將css樣式...
    JamesSawyer閱讀 3,950評(píng)論 2 6
  • 1. 新建一個(gè)文件夾,命名為 webpack-cli , webpack-cli 就是你的項(xiàng)目名,項(xiàng)目名建議使用小...
    魯大師666閱讀 1,661評(píng)論 1 3
  • 下載簡(jiǎn)書有半年了,直到現(xiàn)在,才發(fā)第一篇文。這期間也有陸陸續(xù)續(xù)寫過一些東西,但最終都無一例外地爛尾,或是沒有下文。 ...
    iao_q閱讀 239評(píng)論 0 0
  • 今天是我值班,所以6:50,我就開始準(zhǔn)備出發(fā)。 因?yàn)榻裉煳业哪赣H要去看望我的姥姥,我的姥姥住院了。所以我想早一點(diǎn),...
    lygly9閱讀 359評(píng)論 0 0

友情鏈接更多精彩內(nèi)容