Le lien actif
Fait partie de la section L'essentiel de Next.js du Journey React de Coddy — leçon 34 sur 47.
Chaque site doté d'une barre de navigation met en évidence le lien sur lequel vous vous trouvez actuellement. Pour ce faire, un composant doit savoir une chose que le serveur ne peut pas lui indiquer après coup : quelle URL est actuellement affichée à l'écran.
next/navigation vous le fournit :
'use client';
import { usePathname } from 'next/navigation';
export default function Nav() {
const pathname = usePathname();
// sur /about, pathname est la chaîne '/about'
}C'est un hook, donc les règles que vous connaissez déjà s'appliquent : il ne fonctionne que dans un composant dont le fichier commence par 'use client'. C'est la raison principale pour laquelle une barre de navigation est généralement l'un des rares client components dans une application par ailleurs rendue côté serveur : elle doit s'exécuter à nouveau à chaque changement de route.
À partir de là, il s'agit d'une simple comparaison :
<Link
href="/menu"
className={pathname === '/menu' ? 'nav-link active' : 'nav-link'}
>
Menu
</Link>Notez où se trouve la nav : dans le layout. Elle s'affiche une fois et survit à chaque navigation, c'est donc le changement de pathname qui la réaffichera, et non un remontage.
Défi
FacileLa barre de navigation fonctionne, mais rien n'indique sur quelle page vous vous trouvez. Corrigez cela dans components/Nav.jsx.
- Appelez
usePathname()et stockez-le danspathname. - Donnez à chaque lien le className
"nav-link active"lorsque sonhrefcorrespond àpathname, et un simple"nav-link"sinon.
Le lien Home pointe vers /, le lien Menu vers /menu.
Essayez vous-même
import './globals.css';
import Nav from '../components/Nav.jsx';
export const metadata = {
title: 'Coddy Eats',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<Nav />
{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