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

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
})}
相关推荐
我叫张小白。15 小时前
Vue3 插槽:组件内容分发的灵活机制
前端·javascript·vue.js·前端框架·vue3
Lovely_Ruby15 小时前
前端er Go-Frame 的学习笔记:实现 to-do 功能(一)
前端·后端
脾气有点小暴15 小时前
uniapp通用递进式步骤组件
前端·javascript·vue.js·uni-app·uniapp
问道飞鱼15 小时前
【前端知识】从前端请求到后端返回:Gzip压缩全链路配置指南
前端·状态模式·gzip·请求头
小杨累了15 小时前
CSS Keyframes 实现 Vue 无缝无限轮播
前端
小扎仙森15 小时前
html引导页
前端·html
小飞侠在吗15 小时前
vue toRefs 与 toRef
前端·javascript·vue.js
csuzhucong15 小时前
斜转魔方、斜转扭曲魔方
前端·c++·算法
燃烧的土豆16 小时前
100¥ 实现的React项目 Keep-Alive 缓存控件
前端·react.js·ai编程
半生过往16 小时前
前端运行PHP 快速上手 使用 PHPStudy Pro 详细搭建与使用指南
开发语言·前端·php