⊗jsrtPmCpPS 85 of 112 menu

การส่งสเตตไปยังคอมโพเนนต์ลูกใน React

สมมติว่าเรามีอาร์เรย์ของผลิตภัณฑ์:

const initProds = [ {id: id(), name: 'product1', cost: 100}, {id: id(), name: 'product2', cost: 200}, {id: id(), name: 'product3', cost: 300}, ];

สมมติว่าอาร์เรย์นี้อยู่ในคอมโพเนนต์ Products บันทึกผลิตภัณฑ์เหล่านี้ลงในสเตต ของคอมโพเนนต์:

function Products() { const [prods, setProds] = useState(initProds); }

ตอนนี้เรามาไล่ผลิตภัณฑ์ด้วยลูป และแสดงผลในมาร์กอัปบางส่วน:

function Products() { const [prods, setProds] = useState(initProds); const items = prods.map(prod => { return <div key={prod.id}> name: <span>{prod.name}</span>, cost: <span>{prod.cost}</span> </div>; }); return <div> {items} </div>; }

ดังที่คุณเห็น เนื้อหาภายในลูป map ของเรา ค่อนข้างซับซ้อน โดยเฉพาะถ้ามาร์กอัปของ ผลิตภัณฑ์เติบโตขึ้นในอนาคต ความซับซ้อน เช่นนี้ทำให้การอ่าน ทำความเข้าใจ และ บำรุงรักษาโค้ดเป็นเรื่องยาก

ควรจะดีกว่าถ้าแยกโค้ดที่รับผิดชอบในการแสดงผล ผลิตภัณฑ์ออกเป็นคอมโพเนนต์แยกต่างหาก ตั้งชื่อว่า Product นี่คือโค้ดของคอมโพเนนต์ของเรา:

function Product({ name, cost }) { return <div> name: <span>{name}</span>, cost: <span>{cost}</span> </div>; }

ตอนนี้ภายในคอมโพเนนต์ Products ในลูป map เรามาใช้คอมโพเนนต์ลูก Product:

function Products() { const [prods, setProds] = useState(initProds); const items = prods.map(prod => { return <Product key ={prod.id} name={prod.name} cost={prod.cost} />; }); return <div> {items} </div>; }

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

ในทางเทคนิค เราได้ผลลัพธ์ว่าคอมโพเนนต์แม่ มีสเตตที่มีข้อมูล ส่วนคอมโพเนนต์ลูก ได้รับข้อมูลเหล่านี้ในรูปของพร็อพส์ และแสดงผลในลักษณะที่เราต้องการ

ในสเตตของคอมโพเนนต์ Users มีอาร์เรย์ต่อไปนี้:

const initUsers = [ {id: id(), name: 'user1', surname: 'surn1', age: 30}, {id: id(), name: 'user2', surname: 'surn2', age: 31}, {id: id(), name: 'user3', surname: 'surn3', age: 32}, ];

ไล่อาร์เรย์นี้ด้วยลูปและแสดงผล ผู้ใช้ทั้งหมดบนหน้าจอ สร้างคอมโพเนนต์แยกต่างหาก ชื่อ User สำหรับการแสดงผลผู้ใช้

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