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

在React中如何显示API获取的控制台可打印但页面不展示的数据

问题定位

  • 核心问题是接口返回的结构和你赋值的逻辑不匹配:接口返回的data是一个外层包装对象,你要渲染的列表数据实际存放在该对象的data属性内,你直接把外层对象赋值给todos,非数组类型自然无法调用map方法渲染。
  • 额外说明:setTodos是React的异步更新API,执行赋值后立刻打印todos拿到的还是当前渲染周期的旧值,属于正常现象,不代表赋值操作失败。

修复方案

调整赋值逻辑,取接口返回的内层数组赋值给todos即可,修改后代码如下:

import { useState, useEffect } from 'react';
import axios from 'axios';

function App() {
  // 初始值设为空数组可以省略后续的可选链判断
  const [todos, setTodos] = useState([]);

  useEffect(() => {
    const GetTodos = async () => {
      try {
        const res = await axios.get("api/orders");
        // 取内层数组赋值
        setTodos(res.data.data);
      } catch (err) {
        console.log(err);
      }
    };
    GetTodos();
  }, []);

  return (
    <div className="App">
      <h1>hello</h1>
      {todos.map((todo) => (
        <p key={todo.ID}>{todo.ID}</p>
      ))}
    </div>
  );
}

修改完成后页面即可正常渲染列表内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:45:09