Javascript工具库:classnames

classnames 是一个常用的 JavaScript 工具库,用于 安全、灵活地拼接 CSS 类名字符串 。

类名拼接

index.jsx

javascript 复制代码
import classNames from 'classnames';
import styles from './index.less';

const LoginSubmit = ({ className, ...rest }) => {
    const clsString = classNames(styles.submit, className);
    ...
};

这里做了两件事:

  1. 合并默认类名和自定义类名 :
  • styles.submit :组件自身的默认样式类(来自 index.less 第 49-54 行)
  • className :父组件传递进来的自定义类名(可能是 undefined 或 null )
  1. 安全处理空值 :
  • 如果父组件没有传 className , classNames 会自动忽略它,不会在最终字符串中留下空格或 undefined
  • 这比手动字符串拼接更安全: {styles.submit} {className || ''} 这样的写法可能会产生多余的空格

条件类名

index.jsx

javascript 复制代码
const itemCls = classNames(styles.item, {
                        [styles.read]: item.read,
                    });

理解:

  • 当 item.read 为 true 时 → 添加 styles.read 类
  • 当 item.read 为 false 或 undefined 时 → 不添加这个类

这种写法非常适合处理 UI 状态(如:已读/未读、激活/禁用等)的样式切换!

相关推荐
故事还在继续吗几秒前
嵌入式 C 语言程序性能优化
c语言·开发语言·性能优化
zhoumeina991 分钟前
设计器模版底图,一直渲染错误,是因为第一张图变形后内存中图片数据被改了,其他尺码一直错误
java·前端·javascript
逻辑驱动的ken2 分钟前
Java高频面试考点场景题28
java·开发语言·面试·职场和发展·求职招聘
fly_over7 分钟前
AI Agent 开发实战教程(二):Prompt 工程与工具调用
开发语言·python·langchain·prompt·ai编程·ai agent
csbysj20209 分钟前
并查集基础
开发语言
雨落在了我的手上10 分钟前
初识java(四):程序逻辑控制
java·开发语言·前端
jllllyuz10 分钟前
VC++ 读写 Excel 文件实现
开发语言·c++·excel
Lucky_ldy10 分钟前
C语言学习:字符函数和字符串函数(内容丰富且易懂)
c语言·开发语言·学习
小小编程能手11 分钟前
C++文件从操作:
开发语言·c++
czxyvX14 分钟前
5-Qt系统相关
开发语言·qt