0Pricing
React Academy · Aula

Rotas dinâmicas e grupos de rotas

Crie segmentos dinâmicos [slug], grupos de rotas com (folder) e rotas paralelas.

Rotas dinâmicas e grupos de rotas é uma aula grátis de React Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

Segmentos dinâmicos

Coloque o nome de uma pasta entre colchetes para criar um segmento dinâmico. O valor fica disponível nos params passados para a página.

// app/products/[id]/page.tsx
export default function ProductPage({ params }: { params: { id: string } }) {
  return <h1>Product {params.id}</h1>;
}
// → /products/123 → params.id = '123'

Parâmetros tipados

Os parâmetros são sempre cadeias de caracteres na URL. Faça a conversão explicitamente para IDs numéricos.

export default async function PostPage({ params }: { params: { slug: string } }) {
  const post = await getPostBySlug(params.slug);
  if (!post) notFound();
  return <article>{post.content}</article>;
}

Segmentos curinga

Use [...slug] para corresponder a qualquer quantidade de segmentos de caminho. O valor é uma matriz de cadeias de caracteres.

// app/docs/[...path]/page.tsx
export default function DocsPage({ params }: { params: { path: string[] } }) {
  // /docs/react/hooks → params.path = ['react', 'hooks']
  return <DocViewer path={params.path} />;
}

Segmento curinga opcional

[[...slug]] também corresponde ao segmento raiz — útil para prefixos de caminho opcionais.

// app/[[...lang]]/page.tsx
// Matches /, /en, /en/about, /fr/products/123
export default function Page({ params }: { params: { lang?: string[] } }) {
  const lang = params.lang?.[0] ?? 'en';
  return <div lang={lang}>...</div>;
}

generateStaticParams

Exporte generateStaticParams() para pré-renderizar rotas dinâmicas durante a compilação, produzindo HTML estático para cada combinação de parâmetros.

export async function generateStaticParams() {
  const posts = await getPosts();
  return posts.map(p => ({ slug: p.slug }));
}
// → builds /blog/hello-world, /blog/react-tips etc. statically

Grupos de rotas — (pasta)

Coloque o nome de uma pasta entre parênteses para criar um grupo de rotas. Isso organiza os arquivos sem adicionar um segmento à URL.

// File structure:
// app/(marketing)/about/page.tsx → /about
// app/(marketing)/blog/page.tsx  → /blog
// app/(app)/dashboard/page.tsx   → /dashboard
// (marketing) and (app) don't appear in URLs

Grupos de rotas com layouts compartilhados

Cada grupo de rotas pode ter seu próprio layout.tsx, fornecendo layouts diferentes para seções distintas sem aninhamento na URL.

// app/(marketing)/layout.tsx — marketing shell
// app/(app)/layout.tsx — authenticated app shell
// Both groups share app/layout.tsx as the root

Rotas paralelas — @slot

Coloque o prefixo @ em uma pasta para criar um espaço reservado. Os espaços reservados são renderizados simultaneamente no layout pai — útil para modais, telas divididas ou abas.

// app/@modal/login/page.tsx
// app/layout.tsx
export default function RootLayout({ children, modal }) {
  return (
    <div>
      {children}
      {modal} {/* renders @modal/login/page.tsx side by side */}
    </div>
  );
}

Rotas interceptadoras — (..)

Use a notação (..) para interceptar uma rota e renderizá-la integrada à página (por exemplo, abrir uma foto em um modal em vez de navegar para uma nova página).

// Soft navigation shows modal:
// app/@modal/(..)/photos/[id]/page.tsx
// Hard navigation shows full page:
// app/photos/[id]/page.tsx

Metadados de rotas dinâmicas

Exporte uma função assíncrona generateMetadata em rotas dinâmicas para definir marcadores de otimização para mecanismos de busca por página com base nos parâmetros da rota.

export async function generateMetadata({ params }: { params: { id: string } }) {
  const product = await getProduct(params.id);
  return { title: product.name, description: product.description };
}

Verificação rápida

O que acontece no Roteador de aplicativos do Next.js quando você coloca o nome de uma pasta entre parênteses?

Recapitulação

[id] cria segmentos dinâmicos, [...slug] captura todos os subcaminhos e [[...slug]] os torna opcionais. Os grupos de rotas com (name) organizam o código sem afetar a URL e permitem layouts específicos para cada grupo. Use generateStaticParams para a pré-renderização durante a compilação.

Perguntas Frequentes

A aula “Rotas dinâmicas e grupos de rotas” é grátis?

Sim — o texto completo de “Rotas dinâmicas e grupos de rotas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Rotas dinâmicas e grupos de rotas”?

Crie segmentos dinâmicos [slug], grupos de rotas com (folder) e rotas paralelas. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Rotas dinâmicas e grupos de rotas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Convenções de arquivos do App Router
  2. Componentes de servidor e cliente no Next.js
  3. Rotas dinâmicas e grupos de rotas
  4. API de metadados e SEO no App Router
← Voltar para React Academy