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

React中如何对接口返回的含20个对象的results数组执行map遍历?

解决方案

首先明确问题:你初始化state为数组[],但后续存入的是包含results和info的对象,所以当前data是对象类型而非数组。Object.values(data)返回的是该对象的属性值数组,其中第一个元素就是你需要遍历的20个对象组成的results数组。

下面是几种可行的遍历方式:

方式1:直接访问data.results(推荐)

直接通过对象属性访问目标数组,搭配可选链?.避免初始状态下的报错:

data.results?.map(item => {
  // 编写你的遍历逻辑,比如渲染组件
  return <div key={item.id}>{item.content}</div>;
});
  • 可选链?.的作用:初始时data是[],data.results会是undefined,?.会让map不执行,避免抛出Cannot read properties of undefined的错误。

方式2:从Object.values(data)中取第一个元素

这种方式依赖对象属性的顺序,可读性较差,不推荐,但如果需要可以用:

(Object.values(data)[0] || []).map(item => {
  // 遍历逻辑
  return <div key={item.id}>{item.content}</div>;
});
  • || []的作用:初始状态下Object.values([])是空数组,取索引0会得到undefined,加上|| []可以保证始终有一个数组来执行map。

方式3:修正state初始值(更规范)

将state初始值改为与接收数据结构一致的对象,让代码逻辑更清晰:

// 初始化时匹配数据结构
const [data, setData] = useState({ results: [], info: {} });

// 后续直接遍历results
data.results.map(item => {
  // 遍历逻辑
  return <div key={item.id}>{item.content}</div>;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:55:28