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

Next.js服务端组件API数据map渲染不显示问题求助

问题解决:Next.js服务端组件map遍历数据不显示

你的问题出在map回调函数的写法上——当前回调里定义了<p>{machine.name}</p>但没有返回这个元素,所以React不会渲染任何内容。

修复方案

有两种方式可以解决:

  1. 去掉大括号,改用小括号(自动返回表达式结果):
export default async function LoginPage() {
  const res = await fetch("http://127.0.0.1:3000/api/machines");

  if (!res.ok) {
    throw new Error("Failed to fetch machine data");
  }

  const machines = await res.json();

  console.log(machines.data);

  return (
    <main>
      <h1>Login Page</h1>
      <p>Testing...</p>
      {machines.data.map((machine: any) => (
        <p key={machine.id}>{machine.name}</p>
      ))}
    </main>
  );
}
  1. 在大括号里显式添加return语句:
export default async function LoginPage() {
  const res = await fetch("http://127.0.0.1:3000/api/machines");

  if (!res.ok) {
    throw new Error("Failed to fetch machine data");
  }

  const machines = await res.json();

  console.log(machines.data);

  return (
    <main>
      <h1>Login Page</h1>
      <p>Testing...</p>
      {machines.data.map((machine: any) => {
        return <p key={machine.id}>{machine.name}</p>;
      })}
    </main>
  );
}

额外建议

  • 给每个map生成的元素添加唯一的key属性(比如machine.id),这是React的要求,避免渲染警告。
  • 尽量不要用any类型,建议定义Machine接口来约束数据类型,提升代码健壮性:
interface Machine {
  id: string;
  name: string;
  // 补充其他字段类型
}

// 然后在map中使用:
machines.data.map((machine: Machine) => ...)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:52:25