Route parallele e intercettanti
Implementi pattern avanzati dell'interfaccia, come le route parallele per sezioni indipendenti e le route intercettanti per esperienze simili a modali.
Route parallele e intercettanti è una lezione Next.js 15 Fullstack Web Apps 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 Next.js 15 Fullstack Web Apps, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Next.js 15 Fullstack Web Apps include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Advanced Routing Patterns
Welcome! In this lesson, we'll dive into two powerful Next.js App Router features: Parallel Routes and Intercepting Routes.
These patterns help you build more complex, flexible, and performant user interfaces.
Independent UI with Parallel Routes
Parallel Routes allow you to render multiple independent views or "slots" within the same layout, at the same time.
Think of a dashboard with different sections (e.g., analytics, recent activity) loading independently, or a social media feed with a profile sidebar.
Defining Parallel Route Slots
You define a parallel route by creating a folder prefixed with @, like @team or @analytics, inside your layout's directory.
- Each
@slotfolder contains its ownpage.jsorroute.js. - The parent
layout.jsreceives these slots as props.
Parallel Routes File Structure
Here's how you might set up a dashboard with two parallel slots: @users and @reports. The main layout.js renders both.
File Structure:
app/
├── dashboard/
│ ├── @users/
│ │ └── page.js
│ ├── @reports/
│ │ └── page.js
│ └── layout.js
└── page.jsParallel Route Layout Code
The layout.js receives the parallel slots as props and renders them. If a slot isn't active for the current URL, Next.js can render a default.js.
/* app/dashboard/layout.js */
export default function DashboardLayout({ children, users, reports }) {
return (
<div>
<h1>Dashboard</h1>
<div style={{ display: 'flex' }}>
<div style={{ flex: 1 }}>{users}</div>
<div style={{ flex: 1 }}>{reports}</div>
</div>
{children} {/* Renders content of dashboard/page.js if present */}
</div>
);
}
/* app/dashboard/@users/page.js */
export default function UsersPage() {
return (
<div style={{ border: '1px solid blue', padding: '10px' }}>
<h2>Users Section</h2>
<p>List of active users...</p>
</div>
);
}
/* app/dashboard/@reports/page.js */
export default function ReportsPage() {
return (
<div style={{ border: '1px solid green', padding: '10px' }}>
<h2>Reports Section</h2>
<p>Monthly sales report...</p>
</div>
);
}Intercepting Routes for Modals
Intercepting Routes allow you to "catch" a route from within the current layout and display it as an overlay or modal, without changing the browser's URL.
This is perfect for showing image galleries, product details, or login forms on top of the current page.
Defining Intercepting Routes
Intercepting routes use the (.), (..), or (...) conventions to match segments at different levels relative to the current route.
(.)segment: Catches a segment at the same level.(..)segment: Catches a segment one level above.(...)segment: Catches a segment at the rootappdirectory level.
Intercepting a Sibling Route
Imagine a photo gallery. When you click a photo, instead of navigating to /photos/123, a modal opens, but the URL remains /photos.
File Structure:
app/
├── photos/
│ ├── @modal/(.)[id]/
│ │ └── page.js
│ ├── page.js
│ └── layout.jsIntercepting Route Code Example
Here's a simplified example for a photo modal. The @modal slot catches the [id] route when navigated from /photos, displaying it as an overlay.
/* app/photos/page.js */
import Link from 'next/link';
export default function PhotosPage() {
const photos = [{ id: '1', title: 'Sunset' }, { id: '2', title: 'Mountain' }];
return (
<div>
<h1>My Photos</h1>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '10px' }}>
{photos.map(photo => (
<Link key={photo.id} href={`/photos/${photo.id}`}>
<div style={{ border: '1px solid #ccc', padding: '10px', textAlign: 'center' }}>
<h3>{photo.title}</h3>
<p>(Click to view)</p>
</div>
</Link>
))}
</div>
</div>
);
}
/* app/photos/@modal/(.)[id]/page.js */
export default function PhotoModal({ params }) {
return (
<div style={{
position: 'fixed', top: '0', left: '0', right: '0', bottom: '0',
backgroundColor: 'rgba(0,0,0,0.5)', display: 'flex',
justifyContent: 'center', alignItems: 'center'
}}>
<div style={{ background: 'white', padding: '20px', borderRadius: '8px' }}>
<h2>Photo ID: {params.id}</h2>
<p>This is a modal for photo details.</p>
<Link href="/photos">Close Modal</Link>
</div>
</div>
);
}When to Use Which Pattern
Parallel Routes are for displaying multiple, independent sections of UI simultaneously in a fixed layout (e.g., dashboards).
Intercepting Routes are for displaying content on top of the current page, typically as a modal, without changing the underlying URL (e.g., image viewers).
They solve different but equally important UI challenges!
Route Pattern Challenge
Consider a social media profile page. You want to display a user's posts on the left and their followers list on the right, both updating independently. Additionally, clicking a post should open its full view in a modal.
Which routing patterns would best achieve these two distinct UI requirements?
Recap: Advanced Routing
Great job! You've learned about two powerful Next.js App Router features:
- Parallel Routes (
@slotfolders) for displaying independent UI segments side-by-side. - Intercepting Routes (
(.),(..),(...)conventions) for catching routes and showing them as overlays or modals.
These patterns unlock advanced UI compositions for complex applications.
Domande Frequenti
La lezione «Route parallele e intercettanti» è gratuita?
Sì — il testo completo di «Route parallele e intercettanti» è 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 Next.js 15 Fullstack Web Apps, passa a CoddyKit PRO. Il corso Next.js 15 Fullstack Web Apps include 4 lezioni in totale.
Cosa imparerò in «Route parallele e intercettanti»?
Implementi pattern avanzati dell'interfaccia, come le route parallele per sezioni indipendenti e le route intercettanti per esperienze simili a modali. Eserciti Next.js 15 Fullstack Web Apps 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 Next.js 15 Fullstack Web Apps?
Non è richiesta alcuna esperienza precedente. Next.js 15 Fullstack Web Apps 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 parallele e intercettanti»?
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 Next.js 15 Fullstack Web Apps?
Sì. Ogni lezione Next.js 15 Fullstack Web Apps 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
- Route dinamiche e segmenti catch-all
- Layout annidati e gruppi di route
- Route parallele e intercettanti
- Convenzioni per la UI di caricamento e degli errori