⊗jsnxPmRtNFP 23 of 57 menu

Грешка за невалиден параметър в NextJS

В предишните уроци връщахме 404 грешка в случаите, когато маршрутът за дадения URL не беше намерен. Обаче, при динамичен маршрут може да възникне ситуация, когато маршрутът съществува, но стойността на параметъра е неправилна.

Нека разгледаме пример. Да предположим, че имаме маршрут със следния вид: /user/:id.

Да предположим също, че имаме обект с потребители:

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

Да предположим, че искаме да показваме потребител по неговото id:

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

Очевидно е, че id в URL адреса може да бъде не всякакво, а само едно от ключовете на нашия обект. Опитът за достъп до несъществуващ адрес /user/6 трябва да доведе до връщане на грешка. Нека поправим кода на нашия компонент и върнем текст за грешка:

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

Това обаче не е достатъчно. В този случай ние се опитваме да достъпим несъществуваща страница, което означава, че трябва да върнем HTTP статус 404. Това се прави с помощта на специална функция notFound, вградена в NextJS.

Нека импортираме тази функция:

import { notFound } from 'next/navigation';

И сега ще я извикаме в случаите, когато стойността на параметъра е некоректна:

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

Пълният код на нашия компонент ще изглежда по следния начин:

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

Решете описания проблем във вашите компоненти.

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