className={uploadedImg ${selected && 'selected'} ${disabled && 'disabled-style'}
} 这样写会存在什么问题
ChatGPT said:
你这样写是能用的,但有一个潜在的问题 :当 selected
或 disabled
为 false
时,它们的位置会被渲染成字符串 "false"
,最终 className 里可能会出现:
ini
html
CopyEdit
class="uploadedImg false false"
虽然浏览器会忽略 "false"
这个不存在的类名,但这是不必要的无效 class,可能会:
- 让 HTML 看起来杂乱。
- 给调试带来困扰(你在 DevTools 里会看到
false
这个 class,会误以为哪里有问题)。
改进写法
✅ 用数组 + .filter(Boolean)
:
sql
jsx
CopyEdit
className={[
'uploadedImg',
selected && 'selected',
disabled && 'disabled-style'
].filter(Boolean).join(' ')}
这样 false
、null
、undefined
都会被过滤掉,class 里只会有生效的类名。
✅ 或用 classnames
库(推荐,干净又直观):
javascript
jsx
CopyEdit
import classNames from 'classnames';
className={classNames('uploadedImg', {
'selected': selected,
'disabled-style': disabled
})}