react使用css module無法重寫bootstrap樣式問題及解決
使用css module無法重寫bootstrap樣式問題
react使用css module雖然能夠解決樣式污染,但是同時也失去了寫css樣式的靈活性,特別是:
在.module.css文件中當子元素是非變量的靜態(tài)class類(比如bootstrap), 此時使用css選擇器對該子元素的樣式不會起作用的
比如下面這樣:
// xx組件.module.css
.className變量 .bootstrap類名(比如:Button) {
font-size: 20px
}此時這個樣式是沒法生效的!

解決辦法
第一步:安裝sass-loader, style-loader, node-sass
這里需要注意node-sass跟node版本的對應關系:node-sass - npm
react-app/react-eject創(chuàng)建的項目,在安裝node-sass時可能存在依賴沖突,可能無法安裝較新版本的node-sass, 此時有兩種選擇:
- a. 降低node-sass的安裝版本
- b. 安裝Dart-sass, Dart Sass 是 Sass 的現(xiàn)代實現(xiàn),被廣泛用于前端開發(fā)中,特別是在構建和維護復雜的樣式表時,它可以提高效率和可維護性, 并且擁有更好的兼容性。
yarn add -D sass
第二步、在webpack.config.js配置.scss文件的匹配規(guī)則:
在webpack.config.js文件的module.rules部分增加以下配置:
module: {
rules: [
...
{ test: /\.scss$/, // 匹配SCSS文件
use: [
"style-loader",// 將樣式插入到HTML中
"css-loader", // 解析CSS
"sass-loader" // 編譯SCSS
],
},
]
}react-app/react-eject創(chuàng)建的項目, 不需要做配置,因為已內置sass支持:


第三步: 講css module的后綴從.module.css改成.module.scss, 并使用:global關鍵字將bootstrap樣式用{}包裹起來:

.formFont { // 通過sass解決css模塊選擇子元素的問題
:global { // :global關鍵字必須要有,否則子元素樣式不會生效
.control-label {
font-size: 20px;
}
}
}:global關鍵字的作用:
被:global修飾的類名,比如, :global(.myClass),它不會被sass編譯為哈希字符串,而會保留原始類名 "myClass",這樣就能在css模塊的環(huán)境下使用全局樣式(比如bootstrap這種)。

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- React找不到模塊“./index.module.scss”或其相應的類型聲明及解決方法
- react 報錯Module build failed: BrowserslistError: Unknown browser query `dead`問題的解決方法
- 在?React?Native?中使用?CSS?Modules的配置方法
- 關于React Native報Cannot initialize a parameter of type''NSArray<id<RCTBridgeModule>>錯誤(解決方案)
- 在Create React App中使用CSS Modules的方法示例
- 在create-react-app中使用css modules的示例代碼
- 詳解使用create-react-app添加css modules、sasss和antd
相關文章
React利用React.memo和useCallback緩存彈窗組件
本文主要介紹了React利用React.memo和useCallback緩存彈窗組件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-07-07
ahooks封裝cookie?localStorage?sessionStorage方法
這篇文章主要為大家介紹了ahooks封裝cookie?localStorage?sessionStorage的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
React項目配置axios和反向代理和process.env環(huán)境配置等問題
這篇文章主要介紹了React項目配置axios和反向代理和process.env環(huán)境配置等問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
React如何實現(xiàn)Vue的watch監(jiān)聽屬性
在 Vue 中可以簡單地使用 watch 來監(jiān)聽數(shù)據(jù)的變化,還能獲取到改變前的舊值,而在 React 中是沒有 watch 的,今天通過本文給大家講解React實現(xiàn)Vue的watch監(jiān)聽屬性的方法,需要的朋友可以參考下2023-06-06

