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

React应用调用API获取数据控制台可打印但页面无法显示

问题根因

你的代码存在2个直接导致渲染失败的问题:

  • 接口请求拿到响应数据后,仅执行了console.log(response)打印操作,没有调用setData方法将接口返回值更新到组件state中,因此data始终是初始化时的空数组,遍历自然不会生成任何DOM元素。
  • img标签用法错误:img是自闭合标签,图片地址需要绑定到src属性上,不能将图片地址作为标签的子内容放置,同时列表遍历渲染时缺少React要求的唯一key标识。
修复方案
  • 调整接口请求逻辑,拿到响应数据后调用setData更新状态,统一异步写法,不要混用async/await和.then链式调用避免逻辑混乱。
  • 修正img标签的写法,给遍历生成的列表项补充唯一key值,同时给img补充alt属性提升可访问性。

修复后的完整可运行代码如下:

import React from 'react';
import './App.css';

function App() {
 const [data, setData] = React.useState([]);
 
 const getData = async()=>{
  const res = await fetch(`https://629e71fe3dda090f3c19d701.mockapi.io/v1/meals`,{method:"GET"})
  const response = await res.json()
  // 拿到数据后更新state
  setData(response)
 }

 React.useEffect(() => {
  getData()
 }, []);

  return (
    <div className='root'>
      <div className='container'>
        <div className='card'>
        <div className='juiceName'>
          {data.map((item)=>(
            // 补充列表唯一key属性
            <h1 key={item.id}>{item.name}</h1>
          ))}
        </div>
        <div className='juiceImage'>
          {data.map((item)=>(
            // 修正img写法,地址绑定到src,使用自闭合格式
            <img key={item.id} src={item.image} alt={item.name} />
          ))}
        </div>
        </div>
      </div>
    </div>
  )
}

export default App;

提示:如果接口返回的数据不是直接的数组结构,记得先取到对应数组字段再传给setData,比如如果返回结构是{list: []},就写setData(response.list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:03:24