Open1

Server-side Rendering (SSR)

あおけんあおけん

ページがサーバーサイド・レンダリングを使用している場合、
ページのHTMLはリクエストごとに生成される。

ページにサーバサイド・レンダリングを使用するには、
getServerSidePropsという非同期関数をエクスポートする必要がある。
この関数は、リクエストごとにサーバーから呼び出される。

例えば、頻繁に更新されるデータ(外部APIから取得したもの)を事前にレンダリングする必要があるとします。
このデータをフェッチしてPageに渡すgetServerSidePropsを、
以下のように書くことができます:

export default function Page({ data }) {
  // Render data...
}
 
// This gets called on every request
export async function getServerSideProps() {
  // Fetch data from external API
  const res = await fetch(`https://.../data`)
  const data = await res.json()
 
  // Pass data to the page via props
  return { props: { data } }
}

見ての通り、getServerSidePropsはgetStaticPropsと似ていますが、
ビルド時ではなくリクエスト毎に実行される点が異なる。

getServerSidePropsの動作の詳細については、
データ・フェッチのドキュメントを確認。
https://nextjs.org/docs/14/pages/building-your-application/data-fetching/get-server-side-props