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

Next.js与Strapi集成后前端无法显示服务端返回数据如何解决?

你这个猜测是错误的,Next.js的getStaticProps会在页面组件渲染前完成所有异步逻辑,拿到返回的props后才会渲染组件,不存在提前渲染的问题。你遇到的问题大概率是以下几个原因:

  • Strapi v4默认返回嵌套结构
    从Strapi v4开始,接口返回的所有实体数据都会嵌套在data字段下,你直接把res.data传给tasks的话,拿到的结构是{data: [任务数组], meta: {分页信息}},外层是对象不是数组,自然无法调用map方法遍历。
  • 多余的await操作
    axios请求返回的res.data已经是经过解析的JS对象,不需要额外加await,虽然这个问题不会导致功能异常,但属于冗余代码。
  • 日志位置不对
    getStaticProps是服务端执行的函数,你写的console.log(data)会打印在启动Next.js的终端里,不会出现在浏览器控制台,先去服务端终端确认返回的数据结构是否符合你的预期。

你可以参考下面的修正代码调整:

import axios from 'axios';

const Tasks = ({ tasks }) => {
  return (
    <ul>
      {tasks && tasks.map(task => (
        <li key={task.id}>{task.attributes.name}</li>
      ))}
    </ul>
  );
};

export async function getStaticProps() {
  const res = await axios.get('http://localhost:1337/tasks');
  // 取出Strapi返回的嵌套数组
  const data = res.data.data;

  if (!data || data.length === 0) {
    return {
      notFound: true,
    }
  }

  return {
    props: { tasks: data },
  };
};

export default Tasks;

如果调整后还是无法展示,去Strapi后台的「设置-用户与权限插件-角色-Public」,确认tasks资源的find权限已经开启,否则服务端请求会拿到403错误,返回非预期数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:06:04