بدل ما الـ Product Card تتحكم في كل التفاصيل، قسّمها لمكونات صغيرة، وخلّي الأب هو اللي يركّبها بالشكل اللي محتاجه.
- ProductCard: الحاوية الرئيسية.
- ProductImage
- ProductInfo
- FavoriteButton
- AddToCartButton
كل جزء مستقل، وتقدر تختار تركّب منه إيه حسب احتياجك.
parts.tsx
function ProductCard({ children }) { return <div className="card">{children}</div>;}function ProductImage({ src }) { return <img src={src} alt="" />;}function ProductInfo({ name, price }) { return ( <div> <h3>{name}</h3> <p>{price}</p> </div> );}function AddToCartButton() { return <button>Add to Cart</button>;}function FavoriteButton() { return <button>♥</button>;}ProductListItem.tsx
function ProductListItem({ product }) { return ( <ProductCard> <ProductImage src={product.image} /> <ProductInfo name={product.name} price={product.price} /> <FavoriteButton /> <AddToCartButton /> </ProductCard> );}ده مثال بسيط على الـ Composition.
خلّصت الفصل لما
🧠 اختبر نفسك
١) ProductCard بتعرف إن جواها زرار مفضلة؟
لأ. بتعرض
children بس.٢) مين يقرر إن الكارت فيه Favorite و Add to Cart؟
الأب، زي
ProductListItem، مش الحاوية.