5 min read
ā¢Question 18 of 47mediumHow does Static Site Generation work in Next.js?
Pre-rendering pages at build time.
What You'll Learn
- Static generation
- generateStaticParams
- On-demand revalidation
Static by Default
code.txtTSX
// Automatically static if no dynamic data
export default function About() {
return <h1>About Us</h1>;
}Generate Static Params
code.txtTSX
// app/blog/[slug]/page.tsx
export async function generateStaticParams() {
const posts = await getPosts();
return posts.map((post) => ({
slug: post.slug,
}));
}
export default async function BlogPost({ params }) {
const post = await getPost(params.slug);
return <article>{post.content}</article>;
}With Fallback
code.txtTSX
// Generate some at build, rest on-demand
export async function generateStaticParams() {
const posts = await getTopPosts(10);
return posts.map((post) => ({ slug: post.slug }));
}
// Pages not generated at build will be generated on first request
export const dynamicParams = true; // default
// Or disable to return 404 for non-generated paths
export const dynamicParams = false;On-Demand Revalidation
code.txtTSX
// app/api/revalidate/route.ts
import { revalidatePath, revalidateTag } from 'next/cache';
export async function POST(request: Request) {
const { path, tag } = await request.json();
if (path) revalidatePath(path);
if (tag) revalidateTag(tag);
return Response.json({ revalidated: true });
}