实习小记(类名添加问题)&&运算符返回结果

className={uploadedImg ${selected && 'selected'} ${disabled && 'disabled-style'}} 这样写会存在什么问题

ChatGPT said:

你这样写是能用的,但有一个潜在的问题 :当 selecteddisabledfalse 时,它们的位置会被渲染成字符串 "false",最终 className 里可能会出现:

ini 复制代码
html
CopyEdit
class="uploadedImg false false"

虽然浏览器会忽略 "false" 这个不存在的类名,但这是不必要的无效 class,可能会:

  1. 让 HTML 看起来杂乱。
  2. 给调试带来困扰(你在 DevTools 里会看到 false 这个 class,会误以为哪里有问题)。

改进写法

✅ 用数组 + .filter(Boolean)

sql 复制代码
jsx
CopyEdit
className={[
  'uploadedImg',
  selected && 'selected',
  disabled && 'disabled-style'
].filter(Boolean).join(' ')}

这样 falsenullundefined 都会被过滤掉,class 里只会有生效的类名。


✅ 或用 classnames 库(推荐,干净又直观):

javascript 复制代码
jsx
CopyEdit
import classNames from 'classnames';

className={classNames('uploadedImg', {
  'selected': selected,
  'disabled-style': disabled
})}
相关推荐
萌萌哒草头将军7 分钟前
🚀🚀🚀 Webpack 项目也可以引入大模型问答了!感谢 Rsdoctor 1.2 !
前端·javascript·webpack
小白的代码日记10 分钟前
Springboot-vue 地图展现
前端·javascript·vue.js
teeeeeeemo12 分钟前
js 实现 ajax 并发请求
开发语言·前端·javascript·笔记·ajax
OEC小胖胖26 分钟前
【CSS 布局】告别繁琐计算:CSS 现代布局技巧(gap, aspect-ratio, minmax)
前端·css·web
Sword9933 分钟前
🎮 AI编程新时代:Trae×Three.js打造沉浸式3D魔方游戏
前端·ai编程·trae
谜亚星36 分钟前
vue和react组件更新的一点思考
前端·前端框架
清秋41 分钟前
全网最全 ECMAScript 攻略( 更新至 ES2025)
前端·javascript·ecmascript 6
puffysang3344 分钟前
Android paging3实现本地缓存加载数据
前端
拉罐1 小时前
React Query:彻底解决 React 数据获取难题的强大利器
前端
一涯1 小时前
用python写一个抓取股市关键词的程序
前端·python