React18TS項目:配置react-css-modules,使用styleName

他的好處不說了

網上一堆文章一個能打的都沒有,

添加開發依賴

pnpm add -D @dr.pogodin/babel-plugin-react-css-modules @types/react-css-modules  

Babel Plugin "React CSS Modules" | Dr. Pogodin Studio

看@dr.pogodin/babel-plugin-react-css-modules官方文檔

不使用babel-plugin-react-css-modules

手搭webpack配置需要處理

1.能啟用css modules

對于裸 Webpack,請參見webpack css-loader的 modules 的選項 鏈接。

2.配置@dr.pogodin/babel-plugin-react-css-modules

使用

  • 將此插件作為直接依賴項安裝(在不允許編譯時 styleName 解析的邊緣情況下,插件會回退到運行時解析)。
npm install --save @dr.pogodin/babel-plugin-react-css-modules
  • Install Webpack at least as a dev dependency:
    至少將 Webpack 作為開發依賴項安裝 Webpack:
npm install --save-dev webpack
  • Add the plugin to Babel configuration:
    將插件添加到 Babel 配置中:
{"plugins": [["@dr.pogodin/react-css-modules", {// The default localIdentName in "css-loader" is "[hash:base64]",// it is highly-recommended to explicitly specify the same value// both here, and in "css-loader" options, including the hash length// (the last digit in the template below)."generateScopedName": "[hash:base64:6]"// See below for all valid options.}]]
}

我自己項目手寫的webpack.base.js中使用

const CSS_MODULE_LOCAL_IDENT_NAME = '[name]__[local]___[hash:base64:5]';{test: /.(jsx?)|(tsx?)$/,exclude: /node_modules/,use: [{loader: 'babel-loader',options: {presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],plugins: [['@dr.pogodin/react-css-modules',{generateScopedName: CSS_MODULE_LOCAL_IDENT_NAME,autoResolveMultipleImports: true, // 允許多個匿名導入webpackHotModuleReloading: true, // 啟用熱模塊重新加載代碼的注入handleMissingStyleName: 'throw', // 確定應為未定義的 CSS 模塊執行的操作filetypes: {'.less': {syntax: 'postcss-less',},},},],],},},],
},
{test: /\.less$/,use: ['style-loader',{loader: 'css-loader',options: {modules: {localIdentName: CSS_MODULE_LOCAL_IDENT_NAME,auto: resourcePath => resourcePath.endsWith('.module.less'),},},},{loader: 'postcss-loader',options: {postcssOptions: {plugins: [['postcss-preset-env', {}]],},},},{loader: 'less-loader',options: {lessOptions: {javascriptEnabled: true,},},},],// 排除 node_modules 目錄exclude: /node_modules/,
},

3.TS項目不能直接在jsx中使用styleName,會報錯,

需要引入@types/react-css-modules

就可以使用module.less和styleName了

項目中使用

index.module.less

.adminColor {color: aquamarine;background-color: black;
}

index.tsx

import React from 'react';
import './index.module.less';const Dashboard: React.FC = () => {return (<><h2 styleName="adminColor">我的</h2><div styleName="adminColor">我的</div></>);
};
export default Dashboard;

效果

樣式編碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39709.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

centos7安裝erlang及rabbitMQ

下載前注意事項&#xff1a; 第一&#xff1a;自己的系統版本&#xff0c;centos中uname -a指令可以查看&#xff0c;el8&#xff0c;el7&#xff0c;rabbitMQ的包不一樣&#xff01; 第二&#xff1a;根據rabbitMQ中erlang version找到想要下載rabbitMQ對應erlang版本&#x…

封裝、繼承、多態

封裝是什么&#xff1f; 封裝是面向對象的特征之一&#xff0c;是對象和類概念的主要特性。 封裝&#xff0c;也就是把客觀事物封裝成抽象的類&#xff0c;并且類可以把自己的數據和方法只讓可信的類或者對象操作&#xff0c;對不可信的進行信息隱藏。 封裝&#xff0c;是把客觀…

C++儲備

一、類的 三大特性 封裝&#xff0c;繼承&#xff0c;多態 二、虛函數 為啥要用到虛函數 C虛函數詳解_Whitesad_的博客-CSDN博客 三、函數重載 四、封裝的保護權限 1.public 成員類內&#xff0c;內外都可以訪問 2.protected 成員&#xff0c;類內可以訪問&#xff0c…

大牛分析相機鏡頭光學中疑難問題

1、變焦和對焦有什么區別? 變焦就是改變鏡頭的焦距(準確說是像距),以改變拍攝的視角,也就是通常所說的把被攝體拉近或推遠。例如18-55mm和70-200mm鏡頭就是典型的變焦鏡頭。焦距越長,視角越窄。 對焦通常指調整鏡片組和底片(傳感器平面)之間的距離,從而使被攝物在CC…

SElinux 導致 Keepalived 檢測腳本無法執行

哈嘍大家好&#xff0c;我是咸魚 今天我們來看一個關于 Keepalived 檢測腳本無法執行的問題 一位粉絲后臺私信我&#xff0c;說他部署的 keepalived 集群 vrrp_script 模塊中的腳本執行失敗了&#xff0c;但是手動執行這個腳本卻沒有任何問題 這個問題也是咸魚第一次遇到&…

《安富萊嵌入式周報》第320期:鍵盤敲擊聲解碼, 軍工級boot設計,開源CNC運動控制器,C語言設計筆記,開源GPS車輛跟蹤器,一鍵生成RTOS任務鏈表

周報匯總地址&#xff1a;嵌入式周報 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬漢嵌入式論壇 - Powered by Discuz! 視頻版&#xff1a; https://www.bilibili.com/video/BV1Cr4y1d7Mp/ 《安富萊嵌入式周報》第320期&#xff1a;鍵盤敲擊…

【智慧工地源碼】:人工智能、BIM技術、機器學習在智慧工地的應用

智慧工地云平臺是專為建筑施工領域所打造的一體化信息管理平臺。通過大數據、云計算、人工智能、BIM、物聯網和移動互聯網等高科技技術手段&#xff0c;將施工區域各系統數據匯總&#xff0c;建立可視化數字工地。同時&#xff0c;圍繞人、機、料、法、環等各方面關鍵因素&…

理解持續測試,才算理解DevOps

軟件產品的成功與否&#xff0c;在很大程度上取決于對市場需求的及時把控&#xff0c;采用DevOps可以加快產品交付速度&#xff0c;改善用戶體驗&#xff0c;從而有助于保持領先于競爭對手的優勢。 作為敏捷開發方法論的一種擴展&#xff0c;DevOps強調開發、測試和運維不同團…

centos如何安裝libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg

在 CentOS 系統上安裝這些包可以按照以下步驟進行&#xff1a; 打開終端&#xff0c;使用 root 或具有管理員權限的用戶登錄。 使用以下命令安裝 libssl-dev 包&#xff1a; yum install openssl-devel使用以下命令安裝 libsdl-dev 包&#xff1a; yum install SDL-devel使用以…

Go 安裝配置

介紹Ubuntu20.04 安裝和配置Go 1.安裝Go 去這個地方下載Go https://go.dev/doc/install 如果之前安裝過&#xff0c;可以參考這個&#xff08;沒有可以忽略&#xff09; 下載完成后執行 sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 然后修改環境變量 sudo ge…

css3-grid:grid 布局 / 基礎使用

一、理解 grid 二、理解 css grid 布局 CSS Grid布局是一個二維的布局系統&#xff0c;它允許我們通過定義網格和網格中每個元素的位置和尺寸來進行頁面布局。CSS Grid是一個非常強大的布局系統&#xff0c;它不僅可以用于構建網格布局&#xff0c;還可以用于定位元素&#xf…

ahooks.js:一款強大的React Hooks庫及其API使用教程(一)

一、ahooks.js簡介二、ahooks.js安裝三、ahooks.js API介紹與使用教程1. useRequest2. useAntdTable3. useSize4. useBoolean5. useToggle6. useHover7. useDebounce8. useEventListener9. useFusionTable10. useKeyPress11. useLoading12. usePrevious13. useForm14. useUpdat…

代碼審計-ASP.NET項目-未授權訪問漏洞

代碼審計必備知識點&#xff1a; 1、代碼審計開始前準備&#xff1a; 環境搭建使用&#xff0c;工具插件安裝使用&#xff0c;掌握各種漏洞原理及利用,代碼開發類知識點。 2、代碼審計前信息收集&#xff1a; 審計目標的程序名&#xff0c;版本&#xff0c;當前環境(系統,中間件…

Flink源碼之State創建流程

StreamOperatorStateHandler 在StreamTask啟動初始化時通過StreamTaskStateInitializerImpl::streamOperatorStateContext會為每個StreamOperator 創建keyedStatedBackend和operatorStateBackend&#xff0c;在AbstractStreamOperator中有個StreamOperatorStateHandler成員變量…

Web framework-Gin

一、Gin Go Web--Go Module 軟件框架&#xff08;software framework&#xff09;&#xff0c;通常指的是為了實現某個業界標準或完成特定基本任務的軟件組件規范&#xff0c;也指為了實現某個軟件組件規范時&#xff0c;提供規范所要求之基礎功能的軟件產品。 框架就是&#…

機器學習|Softmax 回歸的數學理解及代碼解析

機器學習&#xff5c;Softmax 回歸的數學理解及代碼解析 Softmax 回歸是一種常用的多類別分類算法&#xff0c;適用于將輸入向量映射到多個類別的概率分布。在本文中&#xff0c;我們將深入探討 Softmax 回歸的數學原理&#xff0c;并提供 Python 示例代碼幫助讀者更好地理解和…

HarmonyOS NEXT新能力,一站式高效開發HarmonyOS應用

2023年8月6日華為開發者大會2023&#xff08;HDC.Together&#xff09;圓滿收官&#xff0c;伴隨著HarmonyOS 4的發布&#xff0c;華為向開發者發布了匯聚所有最新開發能力的HarmonyOS NEXT開發者預覽版&#xff0c;并分享了圍繞“一次開發&#xff0c;多端部署” “可分可合&a…

代碼隨想錄算法訓練營第60天|動態規劃part17| 647. 回文子串、516.最長回文子序列、動態規劃總結篇

代碼隨想錄算法訓練營第60天&#xff5c;動態規劃part17&#xff5c; 647. 回文子串、516.最長回文子序列、動態規劃總結篇 647. 回文子串 647. 回文子串 思路&#xff1a; 暴力解法 兩層for循環&#xff0c;遍歷區間起始位置和終止位置&#xff0c;然后還需要一層遍歷判斷…

【mysql】—— 表的增刪改查

目錄 序言 &#xff08;一&#xff09;Create操作 1、單行數據 全列插入 2、多行數據 指定列插入 3、插入否則更新 4、直接替換 &#xff08;二&#xff09;Retrieve操作 1、SELECT 列 1??全列查詢 2??指定列查詢 3??查詢字段為表達式 4??為查詢結果指定…

數據結構——堆

數據結構——堆 堆堆簡介堆的分類 二叉堆過程插入操作 刪除操作向下調整&#xff1a; 增加某個點的權值實現參考代碼&#xff1a;建堆方法一&#xff1a;使用 decreasekey&#xff08;即&#xff0c;向上調整&#xff09;方法二&#xff1a;使用向下調整 應用對頂堆 其他&#…