⊗jsnxPmRtNFP 23 of 57 menu

NextJS-də Etibarsız Parametr Xətası

Əvvəlki dərslərdə biz, müvafiq URL üçün marşrut tapılmadığı zaman 404 xətasını qaytırdıq. Lakin, dinamik marşrutda belə bir vəziyyət yarana bilər ki, marşrut mövcud olsun, amma parametrin dəyəri səhv olsun.

Gəlin bir nümunəyə baxaq. Tutaq ki, bizim aşağıdakı kimi bir marşrutumuz var: /user/:id.

Tutaq ki, bizim həmçinin istifadəçilər olan bir obyektimiz var:

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

Tutaq ki, biz istifadəçini onun id-si ilə göstərmək istəyirik:

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

Aydındır ki, URL-dəki id istənilən deyil, yalnız obyektimizin açarlarından biri ola bilər. Mövcud olmayan ünvana /user/6 müraciət etmə cəhdi xətanın baş verməsinə səbəb olmalıdır. Gəlin komponentimizin kodunu düzəldək və xəta mətnini göstərək:

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

Lakin, bu kifayət deyil. Axı bu halda biz mövcud olmayan səhifəyə daxil oluruq, deməli HTTP statusu 404 qaytarmalıyıq. Bu, NextJS-də daxili olan xüsusi notFound funksiyası vasitəsilə edilir.

Gəlin bu funksiyanı import edək:

import { notFound } from 'next/navigation';

İndi isə parametrin dəyəri yanlış olduqda onu çağıracayıq:

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

Komponentimizin tam kodu aşağıdakı kimi olacaq:

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

Təsvir olunan problemi komponentlərinizdə həll edin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et