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

相关推荐
luteres6 小时前
Mybatis+SSM整合笔记
java·开发语言·mybatis
郝学胜-神的一滴6 小时前
《C++11 工程级应用01:告别冗长类型,开启简洁高效编码新时代》深度解读
开发语言·c++·算法·软件开发·系统设计
其实防守也摸鱼6 小时前
推荐一个自动化教育SRC漏洞挖掘系统--AutoHunter
运维·开发语言·人工智能·学习·安全·web安全·自动化
覆东流12 小时前
7.Java数组
java·开发语言·后端
码行山野赴时序归途12 小时前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
threerocks13 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
lzhdim13 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert13 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
ly768914 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
落魄大学生之流水线上谋生计15 小时前
Java锁全面指南:从基础概念到企业级应用
java·开发语言