⊗jsnxPmRtNFP 23 of 57 menu

Netinkamo parametro klaida NextJS

Ankstesnėse pamokose grąžinome 404 klaidą tada, kai maršrutas duotam URL nebuvo rastas. Tačiau, dinaminio maršruto atveju gali būti tokia situacija, kai maršrutas egzistuoja, bet parametro reikšmė neteisinga.

Pažiūrėkime pavyzdžiu. Tarkime, turime maršrutą tokio tipo: /user/:id.

Tarkime, taip pat turime vartotojų objektą:

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

Tarkime, norime rodyti vartotoją pagal jo id:

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

Akivaizdu, kad id URL gali būti ne bet koks, o tik vienas iš mūsų objekto raktų. Bandymas kreiptis į neegzistuojantį adresą /user/6 turėtų vesti prie to, kad bus grąžinama klaida. Pataisykime mūsų komponento kodą ir išveskime klaidos tekstą:

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

To, vis dėlto, nepakanka. Juk šiuo atveju mes kreipiamės į neegzistuojantį puslapį, o tai reiškia, kad turime grąžinti HTTP statusą 404. Tai daroma naudojant specialią funkciją notFound, įmontuotą į NextJS.

Importuokime šią funkciją:

import { notFound } from 'next/navigation';

O dabar ją panaudosime tuo atveju, kai parametro reikšmė nekorektiška:

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

Pilnas mūsų komponento kodas bus tokios formos:

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

Išspręskite aprašytą problemą savo komponentuose.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti