⊗jsrtPmRtGSP 35 of 47 menu

การโหลดข้อมูลหน้าจาก URL Parameters จาก Store ใน React Router

ตอนนี้เราสามารถเพิ่มสินค้าลงในแอปพลิเคชันของเราได้แล้ว เริ่มต้นแอปพลิเคชัน และเพิ่ม สินค้าสองสามชิ้นโดยใช้ปุ่ม หากตอนนี้เรา คลิกที่ตัวสินค้าในรายการ เราจะเห็นว่าแต่ละสินค้ายังคงมี หน้าแสดงผลแบบคงที่เหมือนกัน ซึ่งเราจะ มาทำงานกับหน้านี้ในบทเรียนนี้และบทเรียนต่อๆ ไป

นอกจากนี้ยังจำเป็นต้องสังเกตอีกหนึ่งประเด็น โดยทั่วไป URL ทั้งหมดแบ่งออกเป็น segments - นี่คือ ส่วนต่างๆ ของ URL ระหว่างเครื่องหมาย / คุณ อาจจำได้ว่าเมื่อสร้าง แอปพลิเคชันนี้ เราได้ระบุเส้นทาง 'products/:productId' ตรงนี้ :productId เรียกว่า dynamic segment ด้านหน้าของมัน จะมีเครื่องหมาย ':' ค่าใน segment นี้จะเปลี่ยนแปลง และมันคือค่าเหล่านี้ที่เข้าสู่ URL parameters (URL Params หรือ params) ซึ่งจะถูกส่งผ่านไปยัง loader ภายใต้คีย์ที่กำหนด ในกรณีของเรา นี่จะเป็น params.productId

ลองดูที่แถบที่อยู่ในเบราว์เซอร์ เมื่อคุณคลิกที่สินค้าในรายการ คุณจะเห็นว่า segment สุดท้ายในแถบที่อยู่เปลี่ยนแปลง ค่าเหล่านี้เองที่จะเข้าสู่ loader และสินค้าของเราใน store มี id ที่สร้างขึ้นอย่างไม่ซ้ำกัน ดังนั้น เราจะสามารถโหลดสินค้าที่ เราต้องการได้

และตอนนี้ หลังจากพูดนอกเรื่องเล็กน้อย ให้เรา มาทำงานกับหน้าสินค้าสักที โดยเฉพาะ - กับการโหลดข้อมูลจาก store

เรามาทำความคุ้นเคยกับกระบวนการเดิมอีกครั้ง อันดับแรกใน forStorage.js ให้เพิ่มฟังก์ชัน getProduct เพื่อรับข้อมูล ของสินค้าเฉพาะจาก store ตาม id ที่นี่เราจะส่งผ่าน id ไปยังฟังก์ชัน และตามนั้น หากสินค้าของเรา "ถูกแคช" แล้ว มันจะถูกแสดงผลโดยไม่มีความล่าช้า:

export async function getProduct(id) { await someNetwork(`product:${id}`); }

ต่อไป เราจำเป็นต้องรับอาร์เรย์ของสินค้า และค้นหาสินค้าของเราจากนั้น ตาม id ที่ส่งมา:

export async function getProduct(id) { await someNetwork(`product:${id}`); let products = await localforage.getItem('products'); let product = products.find((product) => product.id === id); return product ?? null; }

ใช้แอปพลิเคชันที่คุณสร้างขึ้นใน แบบฝึกหัดของบทเรียนที่ผ่านมา โดยใช้ เนื้อหาจากบทเรียน สร้าง ฟังก์ชัน getStudent ในไฟล์ forStorage.js เพื่อรับ ข้อมูลของนักเรียนตาม id

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ