⊗jsnxPmRtNFP 23 of 57 menu

Érvénytelen paraméter hiba a NextJS-ben

Az előző leckékben akkor adtunk ki 404 hibát, amikor az adott URL-hez tartozó útvonal nem található. Azonban dinamikus útvonal esetén előfordulhat olyan helyzet, amikor az útvonal létezik, de a paraméter értéke helytelen.

Nézzük ezt egy példán. Tegyük fel, hogy van egy a következő alakú útvonalunk: /user/:id.

Tegyük fel továbbá, hogy van egy objektumunk a felhasználókkal:

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

Tegyük fel, hogy a felhasználót az azonosítója alapján szeretnénk megjeleníteni:

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

Nyilvánvaló, hogy az URL-ben lévő azonosító nem lehet tetszőleges, hanem csak az objektumunk kulcsai közül valamelyik. A nem létező /user/6 címre történő látogatás azzal kellene, hogy járjon, hogy hibaüzenet jelenik meg. Javítsuk a komponensünk kódját, és jelenítsünk meg egy hibaüzenetet:

export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return <p> a felhasználó nem található </p>; } }

Ez azonban nem elég. Hiszen ebben az esetben egy nem létező oldalt töltünk be, ami azt jelenti, hogy a 404 HTTP állapotkódot kell visszaadnunk. Ezt a NextJS-be épített notFound speciális függvénnyel tehetjük meg.

Importáljuk ezt a függvényt:

import { notFound } from 'next/navigation';

Most pedig hívjuk meg akkor, amikor a paraméter értéke helytelen:

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

A komponensünk teljes kódja a következőképpen fog kinézni:

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

Oldja meg az ismertetett problémát a saját komponenseiben.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás