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

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
})}
相关推荐
奔跑的卡卡5 分钟前
线上Web异常发现为什么总是滞后?一套自研Web实时异常分析监控系统整体架构拆解
前端·web安全·架构
梦曦i25 分钟前
create-uni-app v1.1.0:结构化生成,工程骨架更规范
前端·uni-app
流光D28 分钟前
AI时代,搭建 web 站点并配置 nginx 反向代理流程
运维·服务器·前端·人工智能·nginx·ai·ai编程
PBitW33 分钟前
Travel Planner — 智能旅行行程规划助手
前端·后端
梨想橙汁40 分钟前
CSS Grid 网格布局:二维布局神器,轻松实现复杂网页排版
前端·css
lhldsg40 分钟前
酒吧点餐小程序开发:从需求分析到技术落地实战
java·前端·小程序·架构·交友
Csvn41 分钟前
微前端样式隔离:为什么你的 CSS 串到别人家了?Shadow DOM、CSS Variables 与 @layer 实战
前端
金花顺43 分钟前
android_media_AudioTrack
前端·面试
木公子44 分钟前
Vue3源码精读04:Scheduler 调度器深度解析|异步批量更新与任务队列源码全解
前端·vue.js
YHL1 小时前
🧠 React useContext 深度解析:告别 Props 层层传递的噩梦
前端·react.js