Mises en page imbriquées
Fait partie de la section L'essentiel de Next.js du Journey React de Coddy. Leçon 13 sur 47.
Le layout racine n'est pas le seul. Placez un layout.jsx dans n'importe quel dossier et il englobe les routes de ce dossier, et uniquement celles-ci.
app/
layout.jsx wraps EVERYTHING
page.jsx /
menu/
layout.jsx wraps /menu and everything under it
page.jsx /menu
pizza/
page.jsx /menu/pizzaVisitez /menu/pizza et Next.js les imbrique de l'extérieur vers l'intérieur :
RootLayout
MenuLayout
PizzaPageVisitez / et seul le layout racine s'exécute : le layout menu n'est pas dans le chemin de cette URL, il n'apparaît donc jamais.
Un layout imbriqué s'écrit exactement comme le layout racine, sans la structure de base : pas de <html>, pas de <body>. Juste un composant qui accepte des children.
C'est ainsi qu'une section d'un site obtient sa propre barre latérale, ses propres onglets, son propre en-tête, sans la moindre instruction if concernant l'URL actuelle.
Défi
FacileLa section menu a besoin de son propre en-tête : sur /menu et sur ses pages de plats (dish), mais nulle part ailleurs.
app/menu/layout.jsx existe déjà et transmet children directement. À l'intérieur de son <section>, au-dessus de {children}, ajoutez :
- Un
<h2>avecid="menu-header"et le texteMenu
Les tests vérifient que l'en-tête s'affiche sur /menu et sur /menu/pizza, et qu'il a disparu de retour sur /.
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.js2Routage et liens
Les dossiers sont des routesRoutes imbriquéesLier des pagesRoutes dynamiquesPages non trouvéesRécapitulatif : Routage3Mises en page et métadonnées
La mise en page racineNavigation partagéeMises en page imbriquéesMétadonnées de pageMétadonnées dynamiquesRécapitulatif : Mises en page