Publicado em: 15/04/2024

Rotas Dinâmicas e Grupos de Rotas


Neste conteúdo, exploramos dois conceitos poderosos do Next.js: rotas dinâmicas para criar URLs flexíveis e grupos de rotas para melhor organização do código em projetos complexos.

Rotas Dinâmicas no Next.js

As rotas dinâmicas permitem criar URLs que podem variar em tempo de execução, essenciais para:

  • Páginas de detalhes de produtos
  • Perfis de usuário
  • Conteúdo compartilhável via links
  • Qualquer cenário onde parte da URL identifica um recurso específico

Para criar uma rota dinâmica, usamos colchetes no nome do diretório ou arquivo:

1/product/[productId]/page.tsx

Acessando Parâmetros da Rota

Na página que corresponde à rota dinâmica, recebemos automaticamente um objeto com os parâmetros:

1interface PageProps {
2 params: {
3 productId: string; };
4 searchParams: Record<string, string>; }
5export default function ProductDetail({ params, searchParams }: PageProps) {
6 return <div>Detalhes do produto {params.productId}</div>; }

Isso permite buscar dados específicos baseados no ID recebido via URL.

Catch-All Routes

Para rotas ainda mais flexíveis, podemos usar a sintaxe de três pontos (...):

1/product/[...productId]/page.tsx

Isso cria uma rota que captura todos os segmentos após /product/, útil para:

  • URLs complexas com múltiplos níveis
  • Sistemas de categorias/aninhamento
  • Roteamento avançado com múltiplos parâmetros

Grupos de Rotas para Organização

Para manter o projeto organizado sem afetar as URLs, usamos diretórios entre parênteses:

1/(payment)/add-card/page.tsx
2/(payment)/generate-pix/page.tsx

Benefícios desta abordagem:

  • Agrupa logicamente arquivos relacionados
  • Não altera a estrutura de URLs
  • Facilita a manutenção do código
  • Permite organização por funcionalidades

Considerações Finais

O sistema de roteamento do Next.js oferece flexibilidade e organização:

  • Rotas dinâmicas: Criam URLs amigáveis e compartilháveis
  • Catch-all: Oferece máxima flexibilidade para rotas complexas
  • Grupos: Mantêm o código organizado sem impacto nas URLs

Para projetos em produção, considere:

  • Validar sempre os parâmetros recebidos
  • Implementar tratamento de erros para rotas inválidas
  • Usar fallbacks para conteúdo não encontrado
  • Documentar a estrutura de rotas para a equipe

Esses recursos combinados permitem criar aplicações web robustas e bem organizadas, onde a estrutura de arquivos reflete claramente a arquitetura da aplicação enquanto mantém URLs limpas e significativas para os usuários.

Fernando Cunha
Artigo deFernando Cunha

Com mais de 15 anos de experiência em tecnologia e formado pela FAAP em Administração de empresas, hoje é o CEO da Mestres da Web, empresa referência no mercado nacional e com projeções de expansão internacional.

últimos vídeos

veja nossos vídeos mais recentes e esteja por dentro de muitas novidades.

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN
play

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN

Explorando a estrutura gerada pelo Create React App, entendendo o papel das pastas public e src, os conceitos de Virtual DOM, JSX e componentes, além de como o CSS é aplicado nos projetos React.

Autor deste artigo
Fernando Cunha17/03/2025
Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN
play

Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN

Explorando a criação de um layout fixo para a aplicação React, com barra lateral, barra superior e área dinâmica para conteúdo. Utilizando o React Router Dom v6 para gerenciar navegação entre rotas.

Autor deste artigo
Fernando Cunha17/03/2025
Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN
play

Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN

Abordando técnicas para organizar estilos em React, utilizando seletores CSS, CSS Modules, integração com React Router, reset CSS eficiente e boas práticas para garantir consistência visual e manutenibilidade.

Autor deste artigo
Fernando Cunha17/03/2025