⊗jsnxPmRtNFP 23 of 57 menu

Virheellisen parametrin virhe NextJS:ssä

Edellisissä oppitunneissa annoimme 404 -virheen tapauksessa, jossa reittiä tietylle URL-osoitteelle ei löytynyt. Kuitenkin dynaamisessa reitissä voi olla tilanne, jossa reitti on olemassa, mutta parametrin arvo on väärä.

Katsotaanpa esimerkkiä. Oletetaan, että meillä on reitti seuraavasta muodosta: /user/:id.

Oletetaan myös, että meillä on käyttäjäolio:

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

Oletetaan, että haluamme näyttää käyttäjän hänen id:nsä perusteella:

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

On selvää, että id URL-osoitteessa voi olla ei mikä tahansa, vaan vain yksi avaimistamme meidän oliossamme. Yritys päästä käsiksi olematonta osoitetta /user/6 kohtaan pitäisi johtaa siihen, että annetaan virhe. Korjataan komponenttimme koodi ja tulostetaan virheteksti:

export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return <p> käyttäjää ei löytynyt </p>; } }

Tämä ei kuitenkaan riitä. Loppujen lopuksi tässä tapauksessa päättelemme olematonta sivua, ja siksi meidän pitäisi antaa HTTP-tila 404. Tämä tehdään käyttämällä erityistoimintoa notFound, joka on sisäänrakennettu NextJS:ään.

Tuodaan tämä toiminto:

import { notFound } from 'next/navigation';

Ja nyt kutsumme sitä tapauksessa, jossa parametrin arvo on virheellinen:

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

Komponenttimme täydellinen koodi näyttää seuraavalta:

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

Ratkaise kuvattu ongelma komponenteissasi.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää