Routing programmatico
Fa parte della sezione Nozioni essenziali di Next.js del percorso React di Coddy. Lezione 35 di 47.
<Link> gestisce la navigazione che l’utente sceglie. Ma a volte decide l’app: dopo l’invio di un modulo, dopo che un accesso è riuscito, dopo aver fatto clic su un pulsante che prima deve svolgere delle operazioni.
Per questi, navighi dal codice con useRouter:
'use client';
import { useRouter } from 'next/navigation';
export default function CheckoutButton() {
const router = useRouter();
return (
<button onClick={() => router.push('/thanks')}>
Check out
</button>
);
}L'oggetto router ti offre:
router.push(url): vai lì e aggiungilo alla cronologiarouter.replace(url): vai lì, sostituendo la voce corrente (non potrai tornare indietro)router.back(): un passo indietrorouter.refresh(): esegui di nuovo il rendering sul server della route corrente
Due regole da ricordare. Primo, useRouter proviene da next/navigation, non dal vecchio next/router. Secondo, è un hook, quindi richiede 'use client'.
Quando basta un semplice link, usa un link: è un vero <a>, quindi funziona con le tastiere, gli screen reader e il clic con il tasto centrale. Usa router.push quando la navigazione è una conseguenza di qualcosa, non la cosa in sé.
Sfida
FacileLa pagina iniziale ha un pulsante "Order now" che non fa nulla. Fai in modo che navighi.
- In
components/OrderButton.jsx, recupera il router conuseRouter(). - Al clic, indirizza l’utente a
/menuconrouter.push.
Lascia invariato l’id="order-btn" del pulsante: i test fanno clic su di esso.
Provalo tu
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Nozioni essenziali di Next.js
4Server e Client
Due tipi di componentiLeggere l'erroreLa riga 'use client'Mantieni piccole le parti ClientServer dentro ClientRiepilogo: Server e Client7Navigazione lato client
Il link attivoRouting programmaticoFiltrare con l'URLGestori delle routeRiepilogo: navigazione2Routing e collegamenti
Le cartelle sono routeRoute annidateCollegare le pagineRoute dinamichePagine non trovateRiepilogo: routing5Dati sul server
Componenti asincroniIn attesa dei parametri della routeDue fetch contemporaneiStati di caricamentoGestione degli erroriRiepilogo: recupero dei dati8Progetto: Coddy Eats
Passaggio 1: La struttura