⊗jsnxPmRtNFP 23 of 57 menu

Eroare de parametru invalid în NextJS

În lecțiile anterioare am returnat 404 eroare în cazul în care ruta pentru URL-ul dat nu a fost găsită. Cu toate acestea, în cazul unei rute dinamice poate exista o situație în care ruta există, dar valoarea parametrului este incorectă.

Să ne uităm la un exemplu. Să presupunem că avem o rută de următoarea formă: /user/:id.

Să presupunem că avem și un obiect cu utilizatori:

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

Să presupunem că vrem să afișăm utilizatorul după id-ul său:

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

Evident, id-ul din URL poate fi nu oricare, ci doar unul dintre cheile obiectului nostru. Încercarea de a accesa o adresă inexistentă /user/6 ar trebui să conducă la faptul că va fi returnată o eroare. Să corectăm codul componentelor noastre și să afișăm textul cu eroarea:

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

Acest lucru, totuși, nu este suficient. La urma urmei, în acest caz accesăm o pagină inexistentă, ceea ce înseamnă că trebuie să returnăm statusul HTTP 404. Acest lucru se face folosind o funcție specială notFound, încorporată în NextJS.

Să importăm această funcție:

import { notFound } from 'next/navigation';

Și acum o vom apela în cazul în care valoarea parametrului este incorectă:

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

Codul complet al componentei noastre va arăta în felul următor:

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

Rezolvați problema descrisă în componentele dvs.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge