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

是否可以在行内样式inline style中编写多个三元表达式设置样式?

问题原因

你在style属性中使用了逗号运算符,该运算符的特性是依次执行所有表达式后,仅返回最后一个表达式的执行结果,所以第一个day相关的判断逻辑完全被第二个info的判断结果覆盖,自然只有第二个逻辑生效。

解决方法

你可以通过对象展开语法,合并多个条件对应的样式规则,不满足条件时返回空对象而非null,避免合并时报错:

<div
  className='infoBox'
  style={{
    // 不满足day条件时追加红底白字样式
    ...(day ? {} : { backgroundColor: 'red', color: 'white' }),
    // 不满足info条件时追加隐藏样式
    ...(info ? {} : { opacity: '0', height: '0', width: '0', marginBottom: '0' })
  }}
>
</div>

如果存在样式冲突,写在后面的样式规则会覆盖前面的规则,你可以根据需求调整两个条件的前后顺序。

也可以用Object.assign实现相同的合并效果:

<div
  className='infoBox'
  style={Object.assign(
    {},
    day ? {} : { backgroundColor: 'red', color: 'white' },
    info ? {} : { opacity: '0', height: '0', width: '0', marginBottom: '0' }
  )}
>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:54:03