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

相关推荐
eggwyw1 小时前
Anaconda安装卸载的详细流程指南
开发语言·python
用户0044729538252 小时前
练歌镜:让眼镜听懂“循环这一句”
javascript
yuyuxun14 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
another heaven5 小时前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++
SomeOtherTime7 小时前
Rust 闭包语法和原理(AI回答)
开发语言·后端·rust
apcipot_rain7 小时前
C++转Java日记(10)
java·开发语言
总要学点什么7 小时前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
Agent世界9 小时前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
Funlang9 小时前
龙芯上的 Fun:从跑起来到机器码
开发语言·龙芯