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

Next.js新App Router中getServerSideProps无法调用的解决方法

问题原因

App Router 和 Page Router 用的是完全不同的数据获取逻辑,getServerSideProps 是 Page Router 独有的数据获取方法,App Router 根本不认这个函数,所以你写了也不会被执行,页面自然拿不到任何参数。

App Router 里的替代写法

在 App Router 中,app/.../page.tsx 里的页面组件默认是服务器组件,你可以直接在组件内部写异步代码来获取服务器端数据,不需要额外的生命周期函数。

修改后的代码示例:

type Repo = {
  name: string
  stargazers_count: number
}

// 直接在页面组件里写异步逻辑
export default async function Page() {
  const res = await fetch('https://api.github.com/repos/vercel/next.js', {
    // 要是想和 getServerSideProps 一样每次请求都拿最新数据(不缓存),就加这个配置
    cache: 'no-store'
  })
  const repo: Repo = await res.json()

  return <div>{repo.stargazers_count}</div>
}
重要说明
  • 服务器组件支持直接用async/await,Next.js会在服务器端跑完这些异步代码,再把渲染好的HTML发给客户端。
  • 如果需要缓存数据,可以调整fetch的cache选项,或者给组件加revalidate属性;如果要完全禁用缓存(和getServerSideProps行为一致),就用cache: 'no-store'。
  • 要是你需要在客户端组件里拿数据,那得用useEffect或者SWR、React Query这类库,但页面组件本身作为服务器组件时,直接写异步逻辑是最省事的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:05:22