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

相关推荐
Mh3 小时前
别再只会 `find` 了:Map 在前端业务里的真实用法
前端·javascript
隐积5 小时前
3.1.7.Qt容器大家族(3):QVariant——万能盒子
开发语言·qt
kyriewen7 小时前
别再这样写TypeScript了——Code Review中最常见的8个反模式
前端·javascript·typescript
名字还没想好☜7 小时前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
初级代码游戏8 小时前
iOS开发 Swift 速记1:变量和基本数据类型
开发语言·ios·swift
飘尘9 小时前
一文讲清楚前端面试会问到的所有缓存
前端·javascript·面试
酷在前行9 小时前
【R生态】PERMANOVA 进阶实战:距离选择、PERMDISP、两两比较与受限置换(保姆级教程)
开发语言·r语言
ThsPool9 小时前
【ENVI二次开发学习整理 04】ENVI功能扩展与二次开发
java·前端·javascript
cxr8289 小时前
Graphify vs GitNexus vs CodeGraph — 三工具架构深度对比
开发语言·架构·知识图谱
废弃的小码农11 小时前
功能测试--Day07--Python编程基础
开发语言·python