You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中设置className时引号内用花括号加点击类名报错如何解决

问题原因
  • 原有代码的错误来自三个问题:
    1. 三元表达式外层多套了一层{},在JSX的{}插值内部,这层额外的{}会被识别为对象字面量,无法直接和字符串拼接
    2. 非激活状态返回null,拼接时会被转为字符串"null",最终会出现不符合预期的collapsenull类名
    3. 两个类名之间没有预留空格,激活状态会直接拼接成collapseexpand,无法识别为两个独立类
修正方案

方案1:调整原有字符串拼接逻辑

把三元表达式用括号包裹,非激活状态返回空字符串,同时给expand前加空格即可:

className={"collapse" + (active ? " expand" : "")}

方案2:模板字符串写法(更推荐,可读性更高)

用ES6模板字符串直接插值,逻辑更清晰,不容易漏空格:

className={`collapse ${active ? "expand" : ""}`}

方案3(多类名场景可选)

如果项目中需要频繁处理动态类名,可以使用classnames工具库,写法更简洁易维护:

import classNames from 'classnames'
// 调用时传入对象,key为类名,value为是否生效的布尔值
className={classNames('collapse', { expand: active })}

内容的提问来源于stack exchange,提问作者Princenia pk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 04:42:03