สร้างคอมโพเนนต์คอนเทนเนอร์ที่นำกลับมาใช้ซ้ำได้ด้วย prop children และแบ่งหน้าจอของคุณตามความรับผิดชอบที่ชัดเจน
เปิดบทเรียนนี้ใน Kodokonบางคอมโพเนนต์ไม่รู้เนื้อหาของตนล่วงหน้า: การ์ด หน้าต่างโมดัล เลย์เอาต์ React แก้ปัญหานี้ด้วย prop พิเศษ children: ทุกสิ่งที่คุณวางไว้ระหว่างแท็กเปิดและปิดของคอมโพเนนต์จะถูกส่งให้มัน พร้อมสำหรับแทรกไปยังตำแหน่งใดก็ได้ที่มันต้องการ คอนเทนเนอร์จัดการกรอบ ส่วนผู้เรียกจัดหาเนื้อหา
function Card({ children }) {
return <section className="card">{children}</section>;
}
function App() {
return (
<Card>
<h2>Invoice #1024</h2>
<p>Amount: €49.90</p>
</Card>
);
}เมื่อสล็อตเดียวไม่พอ ให้ส่ง JSX ผ่าน props ที่ตั้งชื่อ (named props): title, footer, แถบแอ็กชัน prop สามารถรับ React element ได้เหมือนค่าอื่น ๆ ทุกประการ คุณจะได้ “สล็อต” หลายช่อง แต่ละช่องมีชื่อชัดเจน
function Modal({ title, footer, children }) {
return (
<div className="modal">
<header>{title}</header>
<div className="modal-body">{children}</div>
<footer>{footer}</footer>
</div>
);
}การประกอบยังชี้นำการ แบ่ง (splitting) ด้วย คอมโพเนนต์ควรมีความรับผิดชอบที่ระบุได้อย่างเดียว: แสดงแถวของผู้ใช้ จัดวางรายการ ทันทีที่คอมโพเนนต์สั่งสมหลายบทบาท ให้แยกคอมโพเนนต์ย่อยออกมา: แต่ละตัวจะสั้นลง ทดสอบง่ายขึ้น และนำกลับมาใช้ซ้ำที่อื่นได้
function UserList({ users }) {
return (
<ul>
{users.map((user) => (
<UserRow key={user.id} user={user} />
))}
</ul>
);
}
function UserRow({ user }) {
return (
<li>
<strong>{user.name}</strong> - {user.email}
</li>
);
}children ของคอมโพเนนต์รับอะไร?children ได้ไหม?