react className变量使用方式

XZ探长 XZ探长
2023-11-17
2023-12-14
0
著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。
这种命名规范主要是避免 class 作用域相互影响,在新版的 React 中命名为 xxx.module.scss 自动开启。

这种命名规范主要是避免 class 作用域相互影响,在新版的 React 中命名为 xxx.module.scss 自动开启。

index.module.scss

.select {
display: flex;
width: 148px;
height: 26px;
border-radius: 4px;
border: 1px solid #ffffff;
.active {
background-color: #ffffff;
color: #ac1d1d;
}
}
.select_item {
flex: 1;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;

font-size: 13px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
  .select {
    display: flex;
    width: 148px;
    height: 26px;
    border: 1px solid #ffffff;
    border-radius: 4px;
    .active {
      color: #ac1d1d;
      background-color: #ffffff;
    }
  }

  .select_item {
    font-family: PingFangSC-Regular, PingFang SC;
    font-size: 13px;
    font-weight: 400;
    display: flex;
    overflow: hidden;

    align-items: center;
    flex: 1;
    justify-content: center;
    color: #ffffff;
  }color: #ffffff;
}

在 typescript 里是这样的

declare module '*.module.scss' {
  export const style: any
}

index.tsx

import styles from './index.module.scss'

class Demo extends Component {
   return (
      <div className={styles.select}>
        <div className={`${styles.select_item} ${styles.active}`}>航班</div>
        <div className={styles.select_item}>关注</div>
      </div>
    )
}

所有 class 直接通过 styles.xxx 一级的方式使用

styles 变量打印内容如下

{
  active: "airList_active__G9PFh",
  select: "airList_select__1T2lI",
  select_item: "airList_select_item__1_MHW"
}

最终在浏览器里的组合结果

<div class="airList_select__1T2lI">
  <div class="airList_select_item__1_MHW airList_active__G9PFh">航班</div>
  <div class="airList_select_item__1_MHW">关注</div>
</div>

从上可以看出 index.module.scss 里的样式,会被处理成一个一维 json 对象,然后通过层级组合添加到 class 里,从而实现最终样式效果,而且样式不会冲突,这个类似于 vuescoped

className多个值

<div className={`${styles.foo} ${styles.bar}`}></div>

或者

import classnames from 'classnames';

<div className={classnames('hero hero--primary', styles.heroBanner)}></div>

或者

import clsx from 'clsx';

<div className={clsx('hero hero--primary', styles.heroBanner)}></div>

相关内容

react classNa...
这种命名规范主要是避免 class 作用域相互影响,在新版的 Re...
2023-12-14 08:13:18

热门资讯

Git pull 强制覆盖本地代码 拉取所有更新,不同步git fetch --all
http 响应头安全策略(nginx 版) 针对当前环境下,对网络安全的要求较高,平台的搭建从各个方面都在增强安全性。以下是从 http 头文件...
恢复子模块为主仓库跟踪的分支,删除跟踪和未跟踪的文件 如何通过硬重置和清理命令彻底重置主仓库和所有子模块到最新的提交状态,并警告这些操作会永久删除所有未提...
测试 # 标题1## 标题2### 标题3~~删除线~~*斜体字***粗体*****粗斜体***### 引...
Ubuntu 22 上安装 PHP 8.0 在 Ubuntu 22 上安装 PHP-FPM 8.0 可以按照以下步骤进行:**一、安装必要的依赖...
react className变量使用方式 这种命名规范主要是避免 class 作用域相互影响,在新版的 React 中命名为 xxx.modu...
从游离HEAD状态保存更改到Master分支 Git游离HEAD状态的快速修复:将更改提交回Master分支
批量更新子模块本地master分支 批量更新子模块本地master分支是指通过一次操作,同时更新多个子模块的本地主分支。这样可以节省时间...
Ubuntu 命令方式安装中文语言包 ## 查看语言环境安装之前执行 `$LANG` 中文语言包:* language-pack-zh-...
在 Git 中一键切换、更新并提交到远程 master 分支 一步完成从切换到master分支,到同步、提交本地更改并推送到远程的整个Git操作流程