⊗jsnxPmRtNFP 23 of 57 menu

ข้อผิดพลาดพารามิเตอร์ไม่ถูกต้องใน NextJS

ในบทเรียนก่อนหน้านี้เราได้ส่งคืน ข้อผิดพลาด 404 ในกรณีที่ ไม่พบเส้นทาง (route) สำหรับ URL นั้น อย่างไรก็ตาม ในกรณีของเส้นทางแบบไดนามิก อาจมีสถานการณ์ที่เส้นทางมีอยู่จริง แต่ค่าพารามิเตอร์ไม่ถูกต้อง

ลองดูตัวอย่าง สมมติว่าเรามีเส้นทางรูปแบบต่อไปนี้: /user/:id

และสมมติว่าเรามี อ็อบเจ็กต์เก็บผู้ใช้:

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

สมมติว่าเราต้องการแสดงข้อมูลผู้ใช้ ตามไอดีของเขา:

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

เห็นได้ชัดว่าไอดีใน URL ไม่สามารถเป็น อะไรก็ได้ แต่ต้องเป็นหนึ่งในคีย์ ของอ็อบเจ็กต์ของเรา การพยายามเข้าถึง ที่อยู่ที่ไม่存在的 /user/6 ควรนำไปสู่ การส่งคืนข้อผิดพลาด มาแก้ไข โค้ดคอมโพเนนต์ของเราและแสดง ข้อความข้อผิดพลาด:

export default function User({ params }) { if (users[params.id]) { return <p> { users[params.id] } </p>; } else { return <p> ไม่พบผู้ใช้ </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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ