Carmineprince's Blog
首页
    • HTML
    • CSS
    • JavaScript
    • Vue
    • React
    • TypeScript
    • Node
    • Flutter
    • Electron
    • Python
    • 运维
    • 重学前端
  • 分类
  • 标签
  • 归档

Ziqi Wang

胡思乱想程序员
首页
    • HTML
    • CSS
    • JavaScript
    • Vue
    • React
    • TypeScript
    • Node
    • Flutter
    • Electron
    • Python
    • 运维
    • 重学前端
  • 分类
  • 标签
  • 归档
  • 用TypeScript编写React的最佳实践
  • 项目结构搭建-慕课笔记
  • react17+ts+umi构建移动端web项目
  • CssModule同元素使用多个ClassName
    • 错误的方式
    • 正确的方式
  • 如何优雅的修改antd中的默认样式
  • React+Umi3的数据流解决方案-dva
  • Module "xxx" does not exist in container
  • React Hook详解
  • React相关
carmineprince
2022-02-17

CssModule同元素使用多个ClassName

# CssModule同元素使用多个ClassName

# 错误的方式

<div classNames={styles.className1,styles.className2}></div> // ×
<div classNames={styles.className1 styles.className2}></div> // ×
1
2

# 正确的方式

// 使用es6新增模版字符串方法
<div classNames={`${styles.className1} ${styles.className2}`}></div>
// 使用Array.join()方法拼接字符串
<div classNames={[styles.className1,styles.className2].join(' ')}></div>
1
2
3
4

可以发现无论如何操作,只要最终拼接的字符串是 className1 className2这种形式就可以。

为了简化每次使用的操作,可以使用join进行封装

/**
 * @description: className join, CSS modules 同时使用两个class简化处理
 * @param {array} classNames cj(styles.className1,styles.className2)
 * @return {*}
 * @author: Carmineprince
 */
export const cj = (...classNames: any[]) => {
  return classNames.join(' ');
};
1
2
3
4
5
6
7
8
9

使用:

import * as React from 'react'
import { cj } from '@/utils/tool.ts'
import { s } from './index.less'

const Home : React.FC = () => {
    return <div className={cj(s.className1,s.className2)}>测试</div>
}
1
2
3
4
5
6
7
#css module#react
上次更新: 2/17/2022, 3:13:46 PM
react17+ts+umi构建移动端web项目
如何优雅的修改antd中的默认样式

← react17+ts+umi构建移动端web项目 如何优雅的修改antd中的默认样式→

最近更新
01
pc端rem配置
03-02
02
使用动态变量ts报错的解决
02-25
03
React Hook详解
02-18
更多文章>
Theme by Vdoing | Copyright © 2021-2022 Carmineprince | 鲁ICP备2021046263号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式