⊗jsnxPmRtNFP 23 of 57 menu

Nederīga parametra kļūda NextJS

Iepriekšējās nodarbībās mēs atgriezām 404 kļūdu gadījumā, kad šim URL netika atrasts neviens maršruts. Tomēr dinamiska maršruta gadījumā var rasties situācija, kad maršruts pastāv, bet parametra vērtība ir nepareiza.

Apskatīsim piemēru. Pieņemsim, ka mums ir šāda veida maršruts: /user/:id.

Pieņemsim arī, ka mums ir lietotāju objekts:

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

Pieņemsim, ka mēs vēlamies rādīt lietotāju pēc viņa id:

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

Acīmredzami, ka id URL nevar būt jebkurš, bet tikai viens no mūsu objekta atslēgām. Mēģinājums piekļūt ar neesošu adresi /user/6 jānoved pie kļūdas. Izlabosim mūsu komponenta kodu un izvadīsim kļūdas tekstu:

export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return <p> lietotājs netika atrasts </p>; } }

Tomēr ar to nepietiek. Galu galā šajā gadījumā mēs mēģinām piekļūt neesošai lapai, un tāpēc ir jāatgriež HTTP statuss 404. Tas tiek darīts, izmantojot īpašu funkciju notFound, kas ir iebūvēta NextJS.

Importēsim šo funkciju:

import { notFound } from 'next/navigation';

Un tagad izsauksim to gadījumā, ja parametra vērtība ir nekorekta:

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

Pilns mūsu komponenta kods izskatīsies šādi:

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(); } }

Atrisiniet aprakstīto problēmu savos komponentos.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt