Publicado em: 27/03/2024

Interceptadores de Rotas no Next.js | Tutorial Completo


Neste artigo, vamos explorar o conceito de interceptação de rotas no Next.js, uma funcionalidade poderosa que permite criar experiências de navegação mais ricas e dinâmicas em nossas aplicações.

O que é Interceptação de Rotas?

A interceptação de rotas é um mecanismo que permite capturar uma navegação antes que ela seja concluída e exibir um conteúdo diferente do que seria normalmente renderizado na rota de destino. Isso é particularmente útil para:

  • Criar modais que mantêm o contexto da página anterior
  • Implementar transições suaves entre páginas
  • Oferecer previews de conteúdo sem sair da página atual
  • Criar experiências de usuário mais fluidas

Como Funciona na Prática

No exemplo prático, temos uma galeria de fotos onde:

  1. O usuário clica em uma foto na página inicial
  2. Em vez de navegar para a página de detalhes, um modal é aberto
  3. O modal mostra o conteúdo que estaria na página de detalhes
  4. A URL é atualizada para refletir a foto selecionada

A magia acontece através da estrutura de diretórios especial:

1app/ @modal/ (.)photos/ [id]/ page.tsx photos/ [id]/ page.tsx

O diretório (.)photos indica que queremos interceptar navegações para /photos/[id].

Diferença Entre Navegação Interna e Acesso Direto

Um aspecto crucial da interceptação é o comportamento diferenciado:

  • Navegação interna: Quando o usuário clica em um link dentro da aplicação, a rota é interceptada e o modal é exibido
  • Acesso direto: Quando a URL é acessada diretamente (ou compartilhada), a página completa é carregada sem o modal

Isso permite que o modal seja uma experiência contextual enquanto mantém a capacidade de compartilhar links que funcionam de forma independente.

Implementando a Interceptação

Para implementar a interceptação, precisamos:

  1. Criar uma rota paralela (como @modal)
  2. Dentro dela, criar uma estrutura de pastas que corresponda à rota que queremos interceptar, prefixada com (.)
  3. Implementar um default.tsx que retorna null para evitar renderização quando não há interceptação
  4. Usar o componente Link do Next.js para navegações que devem ser interceptadas

Benefícios da Interceptação de Rotas

Esta abordagem oferece várias vantagens:

  • Experiência do usuário: Transições mais suaves entre conteúdos
  • Contexto preservado: O usuário não perde a referência da página anterior
  • Compatibilidade: Links continuam funcionando quando compartilhados
  • Histórico de navegação: O botão voltar funciona como esperado
  • Progressividade: Funciona mesmo com JavaScript desabilitado

Considerações Finais

A interceptação de rotas no Next.js representa uma evolução significativa na forma como pensamos sobre navegação em aplicações web:

  • Padrão moderno: Alinha-se com as expectativas atuais de UX
  • Facilidade de implementação: A estrutura de arquivos do Next.js torna simples configurar
  • Flexibilidade: Pode ser usada para diversos casos além de modais
  • Performance: Mantém a eficiência do Next.js com renderização otimizada

Para implementações avançadas, considere:

  1. Adicionar animações para transições entre estados
  2. Implementar pré-carregamento de conteúdo interceptado
  3. Usar em conjunto com rotas paralelas para layouts complexos
  4. Testar extensivamente o comportamento em diferentes cenários de navegação

A interceptação de rotas abre um novo leque de possibilidades para criar aplicações web mais dinâmicas e engajantes, combinando os benefícios do Single Page Application com a robustez e acessibilidade de uma aplicação tradicional baseada em páginas.

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