⊗jsnxPmRtNFP 23 of 57 menu

Ugyldig parameterfejl i NextJS

I tidligere lektioner udleverede vi 404 fejl i det tilfælde, hvor ruten for den givne URL ikke blev fundet. Men i tilfælde af en dynamisk rute kan der opstå en situation, hvor routen eksisterer, men parameterværdien er forkert.

Lad os se på et eksempel. Antag, at vi har en rute af følgende form: /user/:id.

Antag også, at vi har et objekt med brugere:

let users = { 1: 'user1', 2: 'user2', 3: 'user3', 4: 'user4', 5: 'user5', };

Antag, at vi ønsker at vise brugeren ud fra deres id:

export default function User({ params }) { return <p> { users[params.id] } </p>; }

Det er indlysende, at id'et i URL'en ikke kan være hvad som helst, men kun en af nøglerne i vores objekt. Et forsøg på at tilgå en ikke-eksisterende adresse /user/6 bør føre til, at der udløses en fejl. Lad os rette koden i vores komponent og udskrive en fejltekst:

export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return <p> user not found </p>; } }

Dette er imidlertid ikke tilstrækkeligt. For i dette tilfælde tilgår vi en ikke-eksisterende side, og bør derfor returnere HTTP-statuskoden 404. Dette gøres ved hjælp af en speciel funktion notFound, indbygget i NextJS.

Lad os importere denne funktion:

import { notFound } from 'next/navigation';

Og nu vil vi kalde den i det tilfælde, hvor parameterværdien er ugyldig:

export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return notFound(); } }

Den fulde kode for vores komponent vil se ud som følger:

import { notFound } from 'next/navigation'; let users = { 1: 'user1', 2: 'user2', 3: 'user3', 4: 'user4', 5: 'user5', }; export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return notFound(); } }

Løs det beskrevne problem i dine komponenter.

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