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

React+TypeScript嵌套映射报错:bounds无map属性的解决方法

解决React+TypeScript中bounds对象无法调用map的错误

错误原因

你定义的ConversionData类型里,bounds是单个对象而非数组,但你却对它调用了数组专属的map方法,这就是TypeScript报错的核心原因。

解决方案

根据你要获取bounds -> departure -> name的需求,分两种场景处理:


场景1:API返回的bounds确实是单个对象

直接访问对象属性即可,不需要用map。修改渲染代码如下:

return (
  <div className="App">
    <h1>
      {result?.map((value) => {
        return (
          <div key={value.uuid}> {/* 必须加唯一key,符合React列表渲染规范 */}
            <div>{value.price.amount}</div>
            {/* 直接读取bounds的departure.name */}
            <div>{value.bounds.departure.name}</div>
          </div>
        );
      })}
    </h1>
  </div>
);

场景2:API返回的bounds是数组(类型定义写错了)

如果实际接口返回的bounds是数组,先修正ConversionData的类型定义,把bounds改为数组类型,之后就能正常用map遍历:

type ConversionData = {
  uuid: string;
  airlinesCode: string;
  price: {
    amount: number;
    currency: string;
  };
  // 将bounds修正为数组类型
  bounds: Array<{
    departure: {
      code: string;
      name: string;
      dateTime: string;
    };
    destination: {
      code: string;
      name: string;
      dateTime: string;
    };
    duration: string;
  }>;
};

// 渲染部分正常使用map,注意加key和返回元素
return (
  <div className="App">
    <h1>
      {result?.map((value) => {
        return (
          <div key={value.uuid}>
            <div>{value.price.amount}</div>
            {value.bounds.map((boundItem) => (
              <div key={`${value.uuid}-${boundItem.departure.code}`}>
                {boundItem.departure.name}
              </div>
            ))}
          </div>
        );
      })}
    </h1>
  </div>
);

额外提醒

  • 列表渲染时务必给每个元素添加唯一key,避免React抛出警告。
  • useEffect里调用setResult(data)后立刻console.log(result)看不到最新值,因为setState是异步操作,要查看最新值可以在组件顶层写console.log(result),或者给useEffect添加result依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:36:59