🐥
React + Next.js - getStaticPathsの使い方
React + Next.jsで開発をする時にSSGの利用は避けれない。今回は事前にfetchしてpropsに値を渡すためのgetStaticPropsと、動的なルーティングに対応するためのgetStaticPathsについて書き記す。
動的にgetStaticPathsのPathを設定する
-
SSGモードで事前にレンダリングを終えるページの場合に、ルーティング先も事前にルーティングを終わらせておける
-
引数には事前にレンダリングする
paths
と事前登録されていないページをレンダリングする際の挙動を定義するfallback
が必要
[id].tsx
export async function getStaticPaths() {
// When this is true (in preview environments) don't
// prerender any static pages
// (faster builds, but slower initial page load)
if (process.env.SKIP_BUILD_STATIC_GENERATION) {
return {
paths: [],
fallback: 'blocking',
}
}
// Call an external API endpoint to get posts
const res = await fetch('https://.../posts')
const posts = await res.json()
// Get the paths we want to prerender based on posts
// In production environments, prerender all pages
// (slower builds, but faster initial page load)
const paths = posts.map((post) => ({
params: { id: post.id },
}))
// { fallback: false } means other routes should 404
return { paths, fallback: false }
}
Discussion