⊗jsnxPmLtPR 40 of 57 menu

Parallel Routing i NextJS

I NextJS kan man gøre det så en del af sitet viser forskelligt indhold afhængigt af den anmodede URL. Dette kaldes parallel routing.

Lad os se på et eksempel. Antag at vi har følgende layout for sitet:

export default function RootLayout({children}) { return ( <html lang="en"> <body> <header> header </header> <main> {children} </main> <footer> footer </footer> </body> </html> ); }

Antag at vi ønsker, at headeren viser dynamisk information. Lad URL'en /users vise en komponent med brugere, og URL'en /posts en komponent med indlæg.

For sådan parallel routing skal man lave en speciel mappe, der starter med tegnet @. Lad os for eksempel kalde vores mappe @info.

I denne mappe placerer vi to komponenter. Den første til at vise brugere i mappen /users/, og den anden til at vise indlæg i mappen /posts/. Vi får følgende filstruktur:

  • /app/
    • /@info/
      • /users/
        • page.jsx
      • /posts/
        • page.jsx

Nu skal vi i sitets layout skrive en speciel kommando for indsættelse. For dette skal man bruge en speciel dynamisk slot.

For at forstå hvad det er, se først på parameteren for vores sitelayout-funktion:

export default function RootLayout({children}) { return ( ); }

Læg mærke til at parameteren er et objekt, hvorfra vi udtrækker sitets indhold i variablen children.

Der kan være andre nøgler i dette objekt. De svarer til de mapper, hvis navn vi startede med @.

I vores tilfælde har vi mappen @info, hvilket betyder at vi vil have adgang til variablen info, der afhængigt af URL'en vil indeholde teksten fra en af komponenterne - brugere eller indlæg. Lad os hente denne variabel:

export default function RootLayout({children, info}) { return ( ); }

Nu kan vi inde i layoutets kode udskrive variablen info. På dette sted vil, afhængigt af URL'en, teksten fra en af vores komponenter blive indsat:

export default function RootLayout({children, info}) { return ( <html lang="en"> <body> <header> <div> {info} </div> </header> <main> {children} </main> <footer> footer </footer> </body> </html> ); }

Lav en dynamisk slot for højre sidebar.

Lav en dynamisk slot for venstre sidebar.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis