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

React中如何在return语句内正确添加if条件判断实现数组渲染

问题原因

  • 原有逻辑将权限判断放在map遍历内部,数组长度为3,因此无论判断结果如何都会执行3次循环,else分支每次返回第一个slide元素,自然重复渲染3次
  • 后续尝试将if放在map外侧时语法错误:JSX中嵌入的{ }内仅支持表达式,if是语句不能直接放在{ }中,因此无法运行

正确实现方式

方式1:外层用三元表达式做判断,不同分支返回不同渲染内容

直接在JSX中用三元表达式,权限验证通过就遍历整个数组渲染所有Tab,不通过就只渲染第一个Tab:

{
  auth.verify(Roles.role1) 
    ? slides.map(item => (
        <Tab
          label={item.title}
          key={item.index}
          component={Link}
          to={item.path}
        />
      ))
    : (
        <Tab
          label={slides[0].title}
          key={slides[0].index}
          component={Link}
          to={slides[0].path}
        />
      )
}

方式2:提前处理要渲染的数组,再统一遍历

如果后续可能会有其他权限对应不同的可渲染slide,也可以先根据权限筛选出要渲染的数组,再统一map,逻辑更清晰易维护:

// 先根据权限筛选出要渲染的项
const renderSlides = auth.verify(Roles.role1) ? slides : [slides[0]];

// 再统一遍历渲染
{
  renderSlides.map(item => (
    <Tab
      label={item.title}
      key={item.index}
      component={Link}
      to={item.path}
    />
  ))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:45:03