⊗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>; }

Аниқки, URL даги ID ихтиёрий эмас, балки бизнинг объектимизнинг калитларининг бири бўлиши керак. Мавжуд бўлмаган манзилга /user/6 мурожаат қилиш хато билан якунланиши керак. Келгила, бизнинг компонентимизнинг кодини тўғрилаб, хатолик матнини чиқарайлик:

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

Бирок, бу етарли эмас. Чунки бу ҳолатда биз мавжуд бўлмаган саҳифага мурожаат қиляпмиз, шаuning учун биз HTTP статуси 404 ни қайтаришимиз керак. Бу NextJS га интеграция қилингган notFound махсус функцияси ёрдамида амалга оширилади.

Келгила, бу функцияни импорт қилайлик:

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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш