⊗jsrxPmRDPP 21 of 57 menu

หน้าสำหรับสินค้าใน Redux

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

เปิดแอปพลิเคชันสินค้าของเราและในโฟลเดอร์ products สร้างไฟล์ ProductPage.jsx ตามที่ คุณจำได้ สินค้าแต่ละรายการของเรามี id ที่ไม่ซ้ำกัน ขอบคุณ id นี้ เราจะสามารถสร้าง URL หน้าที่ไม่ซ้ำกันสำหรับแต่ละสินค้าได้ ตามธรรมเนียมจะหน้าตาเช่นนี้: /products/id123 และ id จะอยู่ใน ส่วนที่เปลี่ยนแปลงได้ (ส่วนเส้นทางเองเราจะจัดการ ในภายหลัง)

ดังนั้น มาเริ่มกันที่ ProductPage.jsx สร้าง คอมโพเนนต์เปล่า ProductPage:

export const ProductPage = () => {}

สิ่งแรกที่เราจะทำที่นี่ - ใช้ Hook useParams เพื่อดึงส่วนที่เปลี่ยนแปลงได้ ของ URL สำหรับหน้าสินค้าที่ เราอยู่:

export const ProductPage = () => { let params = useParams() const { productId } = params }

จากนั้น ตาม id ที่ได้รับ เราจะค้นหา สินค้าที่ต้องการใน slice products ใน store โดยใช้ Hook ที่เราคุ้นเคยแล้ว useSelector:

const product = useSelector((state) => state.products.find((product) => product.id === productId) )

อย่าลืมนำเข้า Hook ทั้งสองในไฟล์:

import { useSelector } from 'react-redux' import { useParams } from 'react-router-dom'

หากสินค้าที่เราต้องการไม่มี (เช่น ผู้ใช้ป้อนที่อยู่ ไม่ถูกต้อง) เราจะแสดงข้อมูลเกี่ยวกับเรื่องนี้ บนหน้าจอ ในขั้นตอนนี้โค้ดสำหรับคอมโพเนนต์ ProductPage ควรมีลักษณะดังนี้:

export const ProductPage = () => { let params = useParams() const { productId } = params const product = useSelector((state) => state.products.find((product) => product.id === productId) ) if (!product) { return <p>ไม่มีสินค้าดังกล่าว</p> } }

และสิ่งที่เหลือคือเพียงแสดง ข้อมูลสินค้าที่ได้รับในการออกแบบ:

return ( <div> <h2>{product.name}</h2> <p>รายละเอียด: {product.desc}</p> <p>ราคา: {product.price}</p> <p>จำนวน: {product.amount}</p> </div> )

เปิดแอปพลิเคชันนักเรียนของคุณ ในโฟลเดอร์ students สร้างไฟล์ StudentPage.jsx ซึ่งคุณจะ รับและแสดงข้อมูลตาม นักเรียนที่เลือก

ด้วย Hook useSelector ของ react-redux รับข้อมูลที่จำเป็นเกี่ยวกับนักเรียน ตามที่แสดงในบทเรียน

แสดงในคอมโพเนนต์ข้อมูลที่ได้รับ เกี่ยวกับนักเรียนบนหน้าจอ

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