Capítulo 356 de 456
Define, em build time, a lista de paths a prerenderizar para uma página de rota dinâmica que usa getStaticProps no Pages Router.
getStaticPaths: função async exportada de uma página dinâmica (pages/repo/[name].js); retorna { paths, fallback }.paths: array de objetos { params: { ... } } com os valores dos segmentos dinâmicos a prerenderizar.fallback: false | true | 'blocking' — controla o comportamento de rotas não geradas no build.getStaticPaths deve ser usada junto com getStaticProps; não pode ser combinada com getServerSideProps.components/ ou qualquer arquivo não-página; deve ser standalone export.export const getStaticPaths = (async () => {
return {
paths: [{ params: { name: 'next.js' } }],
fallback: true, // false or "blocking"
}
}) satisfies GetStaticPaths
export const getStaticProps = (async (context) => {
const res = await fetch('https://api.github.com/repos/vercel/next.js')
const repo = await res.json()
return { props: { repo } }
}) satisfies GetStaticProps<{ repo: Repo }>
getStaticPaths define os paths e getStaticProps busca os dados para cada um.export async function getStaticPaths() {
if (process.env.SKIP_BUILD_STATIC_GENERATION) {
return { paths: [], fallback: 'blocking' }
}
const res = await fetch('https://.../posts')
const posts = await res.json()
const paths = posts.map((post) => ({ params: { id: post.id } }))
return { paths, fallback: false }
}
paths: [] + fallback: 'blocking') para builds de preview mais rápidos, versus gerar tudo em produção.fallback | Comportamento |
|---|---|
false | rotas fora de paths retornam 404 |
true | getStaticProps roda em background; página inicial serve versão fallback até estar pronta |
'blocking' | getStaticProps é chamada antes do render inicial (sem fallback intermediário) |
getStaticPaths com getServerSideProps: não suportado; são mutuamente exclusivos.paths: [] + fallback para deferir geração.getStaticPaths roda só durante next build em produção (nunca em runtime); em dev roda a cada request.fallback para reduzir tempo de build.getStaticPaths sempre acompanha getStaticProps no mesmo arquivo de página dinâmica.getStaticPaths.[param].js, [...slug].js, [[...slug]].js.fallback: true/'blocking' como estratégias de geração incremental.