Rotas
-
()(Parênteses) são usadas no App Router para grupos de rotas sem afetar a URL, por exemplo:
-
[](Colchetes) indicam rotas dinâmicas, por exemplo:
-
pages/post/[id].tsxcria rotas dinâmicas como/post/1e/post/2.
-
app/post/[id]/page.tsxfaz o mesmo no App Router.
Rotas Paralelas
- Documentação Oficial do Next.js sobre Rotas Paralelas
- Se o nome da pasta começa com
@, trata-se de uma rota paralela.
Roteamento no Next.js
O Next.js é um framework React que fornece todas as funcionalidades necessárias para aplicações em produção. Ele habilita o roteamento na aplicação utilizando um sistema baseado na estrutura de arquivos.
Este guia explica como funciona o roteamento no Next.js.
- Como funciona o roteamento no Next.js
- Navegação entre páginas
- Passagem de parâmetros via rota
- Rotas dinâmicas
- Rotas aninhadas dinâmicas
Como funciona o roteamento no Next.js
O Next.js utiliza a estrutura de arquivos para definir as rotas da aplicação. Cada arquivo com extensão .js, .jsx, .ts ou .tsx dentro do diretório pages é automaticamente tratado como uma rota.
Exemplo de estrutura de pastas:
├── pages
| ├── index.js
| ├── contato.js
| └── minha-pasta
| ├── sobre.js
| └── index.js
Aqui, temos quatro páginas:
index.jsé a página inicial acessível em http://localhost:3000contato.jsé a página de contato acessível em http://localhost:3000/contatominha-pasta/index.jsé acessível em http://localhost:3000/minha-pastaminha-pasta/sobre.jsé acessível em http://localhost:3000/minha-pasta/sobre
Como criar links entre páginas
O Next.js renderiza previamente cada página para melhorar a performance. Para navegação, utiliza-se o componente Link do pacote next/link.
import Link from "next/link";
export default function IndexPage() {
return (
<div>
<Link href="/contato">
<a>Ir para Contato</a>
</Link>
<Link href="/minha-pasta/sobre">
<a>Ir para Sobre</a>
</Link>
</div>
);
}
Passagem de parâmetros via rota
O Next.js permite passar parâmetros pela rota e recuperá-los usando o hook useRouter.
- Exemplo de envio de parâmetro:
import Link from "next/link";
export default function IndexPage() {
return (
<Link href={{ pathname: "/sobre", query: { id: "123" } }}>
<a>Ir para Sobre</a>
</Link>
);
}
- Recuperação do parâmetro na página de destino:
import { useRouter } from "next/router";
export default function SobrePage() {
const router = useRouter();
const { id } = router.query;
return <div>Sobre nós: {id}</div>;
}
Rotas dinâmicas
Para definir rotas dinâmicas, utilizamos colchetes ([param]) no nome dos arquivos.
├── pages
| ├── index.js
| ├── [slug].js
| └── minha-pasta
| ├── [id].js
| └── index.js
- Exemplo de uso de rota dinâmica:
import { useRouter } from "next/router";
export default function PaginaDinamica() {
const router = useRouter();
const { slug } = router.query;
return <div>Rota dinâmica: {slug}</div>;
}
Rotas aninhadas dinâmicas
O Next.js permite a criação de rotas dinâmicas aninhadas:
├── pages
| ├── index.js
| └── [categoria]
| └── [produto].js
- Exemplo de recuperação de parâmetros de rotas aninhadas:
import { useRouter } from "next/router";
export default function PaginaDinamicaAninhada() {
const router = useRouter();
const { categoria, produto } = router.query;
return (
<div>
Categoria: {categoria} <br />
Produto: {produto}
</div>
);
}
Com isso, ao acessar /eletronicos/celular, os valores categoria=eletronicos e produto=celular serão recuperados.
Public e Private | Padrão de Pasta

