PassFront
  1. PassFront
  2. База знаний
  3. Server Side Rendering

Как работают динамические маршруты и generateStaticParams в Next.js?

Server Side Rendering

Динамический маршрут содержит параметр в имени папки, например app/posts/[slug]/page.tsx, а `generateStaticParams` сообщает Next.js, какие значения параметра сгенерировать заранее.

Динамический сегмент

// app/posts/[slug]/page.tsx
export default async function Post({ params }: { params: { slug: string } }) {
  const post = await getPost(params.slug);
  return <h1>{post.title}</h1>;
}

Другие формы: [...slug] для любой глубины и [[...slug]] с необязательным значением.

Предварительная генерация

export async function generateStaticParams() {
  const posts = await getAllPosts();
  return posts.map((p) => ({ slug: p.slug }));
}

Страницы для перечисленных значений собираются на этапе сборки. Остальные либо генерируются при первом запросе, либо дают 404, это определяет настройка dynamicParams.

Когда полезно

Блоги, документация и каталоги: быстрые статические страницы для известных адресов при сохранении возможности открывать новые.

Коротко для собеседования

Сегмент [param] делает маршрут динамическим, а generateStaticParams превращает известные значения в статические страницы при сборке.

Другие вопросы раздела