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

React解析复杂JSON数据遇Uncaught TypeError: map非函数问题求助

问题分析与解决

错误根源

你碰到的Uncaught TypeError: items.data.map is not a function,核心问题是你调用map的目标不是数组:

  • API返回的JSON结构里,items是整个响应对象,items.data是包含data数组、links、count的对象,而非可遍历的数组。
  • 真正的数组数据在items.data.data这个层级。

修正步骤

1. 调整map的调用路径

把代码里的items.data.map改成items.data.data.map,只有这个层级才是可以用map遍历的数组。

2. 修正key和渲染内容

  • 你当前用item.data作为key,但每个项目对象里并没有data属性,应该用唯一标识字段,比如item.project_id。
  • 渲染的Continents: {item.data[0]}是错误的,每个item是项目实体,你可以根据需求渲染实际字段,比如项目标题、国家、预算等。

3. 初始化state(可选但推荐)

为避免组件初始化阶段的潜在报错,建议给items设置匹配结构的初始值:

state = {
  DataisLoaded: false,
  items: { data: { data: [] } }
};

修正后的代码片段

.then((res) => res.json())
.then((json) => {
  this.setState({
    items: json,
    DataisLoaded: true
  });
})
}
render() {
  const { DataisLoaded, items } = this.state;
  if (!DataisLoaded) return <div>
    <h1> Loading data ... </h1> </div> ;

  return (
  <div className = "App">
    <h1> Fetch data from an api in react </h1> {
      items.data.data.map((item) => (
      <ol key = { item.project_id } >
        项目标题: {item.title}
        <br />
        国家: {item.country}
        <br />
        预算: {item.budget}
      </ol>
      ))
    }
  </div>
);
}
}    
export default App;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:50:33