Next.js er en kraftfuld ramme til at bygge højtydende React-applikationer. En af dens funktioner er muligheden for at skabe brugerdefinerede layouts til dine sider, så du kan skabe et ensartet design, der er nemt at vedligeholde og opdatere på tværs af din applikation.
Oprettelse af en brugerdefineret layoutkomponent i Next. JS
I mappen navngivet komponenter i dit Next.js-projekt skal du oprette Layout.jsx og tilføj følgende kode for at oprette layoutkomponenten.
importere Hoved fra'næste/hoved'
importere Header fra'./Header.jsx'
importere Sidefod fra'./Footer.jsx'
konst Layout = (børn) => (
Min app</title>
"stylesheet" href="/static/css/style.css" />
</Head>
{children}
</div>
)
eksport standard layout
< p>Denne komponent importerer sidehoved- og sidefodskomponenterne og accepterer underordnede som rekvisitter. Det gengiver underordnede mellem sidehoved- og sidefodskomponenterne. Når du ombryder en side med dette layout, vil sidehoved og sidefod blive vist øverst og nederst.
Brug af Layoutkomponent
For at bruge layoutkomponenten skal du importere den til en sidekomponent og bruge den som vist nedenfor.
import Layout fra '../components/Layout'
const Side = () => (
Hjem</h1>
</Layout>
)
eksport standard side
Den vil anvende layout til denne side. Du kan gentage denne proces på alle de sider, du vil anvende layoutet.
Hvis du vil bruge layoutet på tværs af alle siderne i applikationerne på én gang, skal du importere layoutkomponenten ind i filen /page/_app.js og brug den som følger.
importer Layout fra span> "../components/layout";
funktion MyApp({ Component, pageProps } span>) {
retur (
</Layout>
) ;
}
Eksemplerne vist indtil videre brug mapperne Next.js 12 sider. I Next.js 13 opretter du layoutet i app-mappen (i skrivende stund er den i beta).
Oprettelse af et brugerdefineret layout i appmappen
appmappen i Next.js 13 kræver, at du opretter et rodlayout i bunden. Dette er det layout, som Next.js vil anvende på alle siderne i din applikation.
For at demonstrere skal du oprette en fil med navnet layout.jsx og tilføje følgende kode. p>
eksport standard funktion RootLayout({ børn } span>) {
retur (
"da">
{children}</body>
</html>< br/> );
}
Rodlayoutkomponenten accepterer og gengiver børn. Nedenfor er nogle af de ting, du bør vide om et root-layout:
- Du skal inkludere det i app-mappen.
- Det erstatter _app.js og _document.js i sidemappen i Next.js 12.
- Du skal eksplicit inkludere HTML- og body-tagget.
- Det er en serverkomponent som standard.
Som nævnt gælder rodlayoutet for alle sider, så hvordan opretter du tilpassede layouts til forskellige rutesegmenter?
I din app-mappe kan du definere en rute ved at oprette mapper for hver rute segment. For eksempel, oprettelse af en mappe kaldet artikler er knyttet til URL-stien app/artikler. For at tilføje yderligere rutesegmenter skal du oprette en undermappe i hovedrutemappen. Tilføjelse af en mappe kaldet trend inde i mappen artikler tilknyttes f.eks. URL-stien app/articles/trending.
Når du føjer en layout.jsx-komponent til en rutemappe, gælder den for alle sider inden for den pågældende rutesegment og dets undermapper. For eksempel vil tilføjelse af en layoutkomponent til mappen artikler gælde for alle sider i artikelruten, inklusive dem i undermappen trending. Hvis du også tilføjer en layoutkomponent i mappen trend, vil layoutet i artiklermappen blive indlejret i den.
Fordele ved at bruge layouts
Next.js giver dig mulighed for at oprette layoutkomponenter, som du kan genbruge på tværs af forskellige sider. Dette giver dig mulighed for at få et ensartet udseende på tværs af dit websted uden at duplikere kode på tværs af flere sider. Derudover hjælper layouts dig med at implementere ændringer hurtigt, fordi du ikke behøver at foretage ændringer på hver side.