⊗jsnxPmRtNFP 23 of 57 menu

Lỗi Tham số Không hợp lệ trong NextJS

Trong các bài học trước, chúng ta đã trả về lỗi 404 trong trường hợp không tìm thấy route cho URL đó. Tuy nhiên, đối với route động, có thể xảy ra tình huống route tồn tại nhưng giá trị của tham số không đúng.

Chúng ta hãy xem xét một ví dụ. Giả sử chúng ta có một route có dạng như sau: /user/:id.

Giả sử chúng ta cũng có đối tượng người dùng:

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

Giả sử chúng ta muốn hiển thị người dùng dựa trên id của họ:

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

Rõ ràng là id trong URL không thể là bất kỳ giá trị nào, mà chỉ có thể là một trong các khóa của đối tượng của chúng ta. Việc truy cập vào một địa chỉ không tồn tại /user/6 phải dẫn đến việc trả về một lỗi. Hãy sửa mã component của chúng ta và hiển thị thông báo lỗi:

export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return <p> không tìm thấy người dùng </p>; } }

Tuy nhiên, điều này là chưa đủ. Bởi vì trong trường hợp này, chúng ta đang truy cập vào một trang không tồn tại, do đó phải trả về mã trạng thái HTTP 404. Điều này được thực hiện bằng cách sử dụng hàm đặc biệt notFound, được tích hợp sẵn trong NextJS.

Hãy import hàm này:

import { notFound } from 'next/navigation';

Và bây giờ chúng ta sẽ gọi nó trong trường hợp giá trị tham số không chính xác:

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

Mã đầy đủ của component của chúng ta sẽ trông như sau:

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

Hãy giải quyết vấn đề đã mô tả trong các component của bạn.

Tiếng Việt
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ʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối