Route dinamiche e gruppi di route
Crei segmenti dinamici [slug], gruppi di route con (folder) e route parallele.
Route dinamiche e gruppi di route è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.
Segmenti dinamici
params, passato alla pagina.
// app/products/[id]/page.tsx
export default function ProductPage({ params }: { params: { id: string } }) {
return <h1>Product {params.id}</h1>;
}
// → /products/123 → params.id = '123'Parametri tipizzati
I parametri nell'URL sono sempre stringhe. Li analizzi esplicitamente quando rappresentano identificativi numerici.
export default async function PostPage({ params }: { params: { slug: string } }) {
const post = await getPostBySlug(params.slug);
if (!post) notFound();
return <article>{post.content}</article>;
}Segmenti catch-all
Usi [...slug] per corrispondere a un numero qualsiasi di segmenti del percorso. Il valore è un array di stringhe.
// 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} />;
}Catch-all opzionale
[[...slug]] corrisponde anche al segmento radice: è utile per i prefissi del percorso opzionali.
// 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
Esporti generateStaticParams() per eseguire il pre-rendering delle route dinamiche al momento della build, generando HTML statico per ogni combinazione di parametri.
export async function generateStaticParams() {
const posts = await getPosts();
return posts.map(p => ({ slug: p.slug }));
}
// → builds /blog/hello-world, /blog/react-tips etc. staticallyGruppi di route — (folder)
Racchiuda il nome di una cartella tra parentesi per creare un gruppo di route. In questo modo organizza i file senza aggiungere un segmento all'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 URLsGruppi di route con layout condivisi
Ogni gruppo di route può avere il proprio layout.tsx, fornendo layout diversi a sezioni diverse senza annidamento nell'URL.
// app/(marketing)/layout.tsx — marketing shell
// app/(app)/layout.tsx — authenticated app shell
// Both groups share app/layout.tsx as the rootRoute parallele — @slot
Anteponendo @ al nome di una cartella si crea uno slot. Gli slot vengono renderizzati simultaneamente nel layout genitore: sono utili per modali, visualizzazioni divise o schede.
// 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>
);
}Route intercettanti — (..)
Usi la notazione (..) per intercettare una route e renderizzarla inline (ad esempio, per aprire una foto in una modale invece di passare a una nuova pagina).
// Soft navigation shows modal:
// app/@modal/(..)/photos/[id]/page.tsx
// Hard navigation shows full page:
// app/photos/[id]/page.tsxMetadati dinamici delle route
Esporti una funzione asincrona generateMetadata nelle route dinamiche per impostare i tag SEO di ogni pagina in base ai parametri della route.
export async function generateMetadata({ params }: { params: { id: string } }) {
const product = await getProduct(params.id);
return { title: product.name, description: product.description };
}Verifica rapida
Che cosa comporta racchiudere il nome di una cartella tra parentesi nell'App Router di Next.js?
Riepilogo
[id] crea segmenti dinamici, [...slug] intercetta tutti i sotto-percorsi e [[...slug]] li rende opzionali. I gruppi di route con (name) organizzano il codice senza modificare l'URL e consentono di definire layout specifici per gruppo. Usi generateStaticParams per il pre-rendering al momento della build.
Impara React con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 88
- Lezioni
- 324
Domande Frequenti
La lezione «Route dinamiche e gruppi di route» è gratuita?
Sì — il testo completo di «Route dinamiche e gruppi di route» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.
Cosa imparerò in «Route dinamiche e gruppi di route»?
Crei segmenti dinamici [slug], gruppi di route con (folder) e route parallele. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare React Academy?
Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Route dinamiche e gruppi di route»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione React Academy?
Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Convenzioni dei file dell'App Router
- Componenti server e client in Next.js
- Route dinamiche e gruppi di route
- API Metadata e SEO nell'App Router