Routage programmatique
Fait partie de la section L'essentiel de Next.js du Journey React de Coddy. Leçon 35 sur 47.
<Link> couvre la navigation que l'utilisateur choisit. Mais parfois, c'est l'application qui décide : après la soumission d'un formulaire, après une connexion réussie, après le clic sur un bouton qui a du travail à faire au préalable.
Pour ceux-ci, vous naviguez depuis le code avec 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’objet router vous fournit :
router.push(url): y aller et l’ajouter à l’historiquerouter.replace(url): y aller en remplaçant l’entrée actuelle (impossible d’y revenir en arrière)router.back(): revenir d’une étape en arrièrerouter.refresh(): relancer le rendu côté serveur de la route actuelle
Deux règles méritent d'être retenues. Premièrement, useRouter provient de next/navigation, et non de l'ancien next/router. Deuxièmement, c'est un hook, il nécessite donc 'use client'.
Lorsqu'un simple lien suffit, utilisez un lien : c'est un véritable <a>, il fonctionne donc avec les claviers, les lecteurs d'écran et le clic central. Utilisez router.push lorsque la navigation est la conséquence d'une action, et non l'action elle-même.
Défi
FacileLa page d’accueil comporte un bouton « Order now » qui ne fait rien. Faites-le naviguer.
- Dans
components/OrderButton.jsx, récupérez le routeur avecuseRouter(). - Lors du clic, redirigez l’utilisateur vers
/menuavecrouter.push.
Laissez l’id="order-btn" du bouton tel quel : les tests cliquent dessus.
Essayez vous-même
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de L'essentiel de Next.js
1Pourquoi Next.js
Ce que Next.js apporteLe dossier AppVotre première pageRécapitulatif : Pourquoi Next.js4Serveur & Client
Deux types de composantsLire l'erreurLa ligne 'use client'Garder les parties client de petite tailleServeur dans le clientRécapitulatif : Serveur & Client7Navigation côté client
Le lien actifRoutage programmatiqueFiltrage avec l'URLGestionnaires de routesRécapitulatif : Navigation2Routage et liens
Les dossiers sont des routesRoutes imbriquéesLier des pagesRoutes dynamiquesPages non trouvéesRécapitulatif : Routage