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

React仅渲染有效列表项时,何时用三元运算符而非逻辑运算符做条件渲染

两种条件渲染写法的核心区别

  • 返回值差异(最关键区别)
    逻辑&&运算符的写法在条件不满足时,会返回条件本身的假值:你场景里如果items是空数组,items?.length的值为0,此时&&表达式会直接返回0。而React不会忽略0、空字符串''这类原始类型假值,会直接把0渲染到页面上,造成意料之外的显示问题。
    而三元运算符条件 ? 组件 : null的写法,不满足条件时固定返回null,React遇到null会直接跳过不渲染任何内容,不会有多余内容输出。
  • 语义差异
    三元写法的语义更明确:明确表示「满足条件渲染目标组件,否则什么都不渲染」,后续如果需要补充空状态兜底,直接把null替换为空状态组件即可,扩展性更强。
    &&写法语义是「仅当条件为真时渲染后面的组件」,仅适合你能100%确定条件的假值一定是undefined/null(这两个值React不会渲染)的场景。

你的场景选择建议

优先选三元运算符返回null的写法。
你是基于接口返回的items做判断,接口有可能返回空数组,此时items?.length为0,用&&写法会直接渲染出0,导致界面bug。
如果确实想用&&的简化写法,可以先把条件转成布尔值,规避假值渲染问题,写法如下:

return !!items?.length && (
  <div>
    <MyBlock data={myBlockData} />
  </div>
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:45:02