Capítulo 343 de 456
Dynamic Segments ([segmentName]) permitem criar rotas cujo path é preenchido em request time ou pré-renderizado em build time, sem conhecer os valores exatos antecipadamente.
[id], [slug]; acessível via useRouter().query.[...segmentName] casa múltiplos segmentos subsequentes (/shop/a/b/c).[[...segmentName]] também casa a rota sem nenhum segmento adicional (/shop).import { useRouter } from 'next/router'
export default function Page() {
const router = useRouter()
return <p>Post: {router.query.slug}</p>
}
pages/blog/[slug].js) via useRouter().query.| Route | Example URL | params |
|---|---|---|
pages/blog/[slug].js | /blog/a | { slug: 'a' } |
pages/shop/[...slug].js | /shop/a/b | { slug: ['a', 'b'] } |
pages/shop/[[...slug]].js | /shop | { slug: undefined } |
pages/shop/[[...slug]].js | /shop/a/b/c | { slug: ['a', 'b', 'c'] } |
[...slug] NÃO casa a rota base (/shop dá 404); só [[...slug]] casa a rota sem segmentos.useRouter().query, nunca via props diretas da página no Pages Router.[...slug]) captura array de segmentos; optional catch-all ([[...slug]]) adiciona o caso zero-segmentos.getStaticPaths (não coberto nesta página, ver Data Fetching).useRouter (API Reference): hook usado para acessar query com os valores do Dynamic Segment.getStaticPaths: define quais valores de segmento dinâmico são pré-renderizados em build time.