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 状态(如:已读/未读、激活/禁用等)的样式切换!

相关推荐
朝朝辞暮i4 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
小师兄吃牛肉5 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记5 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
言乐66 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_307779136 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
kakakahahahaha6 小时前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i6 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
朝朝辞暮i7 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
笨笨饿7 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
YOLO数据集集合7 小时前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化