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

使用axios拉取API数据后无法将tags数组渲染到Semantic UI Label组件

问题原因

该报错是异步请求数据的时序问题导致:组件首次渲染时,axios接口请求尚未完成,你传递给ProductInfo组件的tags属性此时为undefined,调用undefined的map方法就会抛出对应错误。首次加载偶尔正常是极小概率下接口响应速度极快,在组件首次渲染前就完成了数据赋值,刷新后请求时序变化就会触发报错。

解决方案

你可以任选以下任意一种方案修复:

  • 方案1:直接在渲染处加兜底逻辑
    将原渲染代码改为可选链+空数组兜底的写法,避免undefined调用map:
    <div className="product tags flex container child">
      {(props.tags ?? []).map((tagsList, i) => (
        <Label size="tiny" as="a" image key={i}>
          {tagsList}
        </Label>
      ))}
    </div>
    
  • 方案2:初始化数据时给tags默认空数组
    在父组件存储接口返回数据的state初始化时,就给tags字段设置默认空数组,避免初始值为undefined:
    // 父组件中state的初始化示例
    const [productInfo, setProductInfo] = useState({
      tags: [],
      // 其他字段的默认值可按需补充
    })
    
  • 方案3:增加条件渲染判断
    仅当tags是数组类型时才渲染标签列表:
    <div className="product tags flex container child">
      {Array.isArray(props.tags) && props.tags.map((tagsList, i) => (
        <Label size="tiny" as="a" image key={i}>
          {tagsList}
        </Label>
      ))}
    </div>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:03