⊗jsnxPmRtNFP 23 of 57 menu

Greška nevažećeg parametra u NextJS-u

U prethodnim lekcijama vraćali smo grešku 404 u slučaju kada ruta za dati URL nije pronađena. Međutim, u slučaju dinamičke rute može se javiti situacija kada ruta postoji, ali je vrednost parametra pogrešna.

Hajde da pogledamo primer. Neka imamo rutu sledećeg oblika: /user/:id.

Neka imamo takođe objekat sa korisnicima:

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

Recimo da želimo da prikažemo korisnika po njegovom ID-u:

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

Očigledno je da ID u URL-u ne može biti bilo koji, već samo jedan od ključeva našeg objekta. Pokušaj pristupa na nepostojeću adresu /user/6 trebalo bi da dovede do toga da se vrati greška. Hajde da ispravimo kod našeg komponenta i vratimo tekst sa greškom:

export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return <p> korisnik nije pronađen </p>; } }

Ovo, međutim, nije dovoljno. Jer u ovom slučaju pristupamo stranici koja ne postoji, a to znači da moramo da vratimo HTTP status 404. To se radi pomoću specijalne funkcije notFound, ugrađene u NextJS.

Hajde da importujemo tu funkciju:

import { notFound } from 'next/navigation';

A sada ćemo je pozivati u slučaju kada vrednost parametra nije ispravna:

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

Pun kod našeg komponenta će izgledati na sledeći način:

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

Rešite opisan problem u vašim komponentima.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij