Merhabalar.

Bu yazımda props’un children özelliğine bakacağız.

Geliştirmekte olduğumuz projede ürün kartlarımız vardı. Şimdi şunu yapmak istiyorum, her ürün kartına standart bir reklam içeriği eklemek istiyorum. Bunu PropsItem içinde göndermek istiyorum ama direkt bir props olarak değil.

Normalde bir component’i çağırırken şöyle kullanıyordum.

<ProductItem />

Direkt içinde bir değer göndermek istersem, bu Component’i şöyle de kullanabilirdim.

<ProductItem> Xyz </ProductItem>

Hiçbir işlem yapmadan bunu böyle kullansak ekranda hiçbir yerde çıktısını göremeyiz. İşte bu props’un bir children’ıdır ve ilgili component’inde bu şekilde yakalanıp kullanılması gerekir.

Şimdi şöyle yapacağım görselimin altına internet sayfamın reklamını yerleştirmek istiyorum. Kodlarımızı vereyim üzerinden anlatıma devam edeyim.

import "./ProductCard.css";
import ProductItem from "./ProductItem";
import { productList } from "../Data/ProductItemData";

const ProductCard = () => {

    return (
        <div className="container">
            <h1 className="heading">Ürün Kartları</h1>
            <div className="card-container">

                {
                    productList.map((product) => (
                        <ProductItem key={product.id} product={product}>muratbilginer.net</ProductItem>
                    ))
                }

            </div>
        </div>
    );
};

export default ProductCard;

Aşağıdaki kodla muratbilginer.net’i bir children olarak gönderdim.

<ProductItem key={product.id} product={product}>muratbilginer.net</ProductItem>

const ProductItem = (props) => {

    const product  = props.product

    return (
        <div className="card">
            <img src={product.image} alt={product.name} className="image" />
            <p style={{ margin: '0' }}>{props.children}</p>
            <h2 style={{ marginBottom: '10px' }}>{product.name}</h2>
            <p style={{ margin: '0' }}>Kategori: {product.category}</p>
            <p style={{ margin: '0' }}>Fiyat: {product.price} TL</p>
        </div>
    )
}

export default ProductItem
<p style={{ margin: '0' }}>{props.children}</p>

props zaten fonksiyon parametresi olarak alınmıştı. Burada img altına bir p etiketi koydum ve {props.children} diyerek ProductCard.jsx’de gönderilen değeri yakalayıp ekrana yazdırdım.

Sonuç olarak artık kartlarım altında site reklamım bulunmakta.

Basit bir örnekle gösterdim ama bu children kısmında istediğiniz her şeyi gönderebilirsiniz. Kullanım alanını daha geniş düşünebilirsiniz. Oraya hazır bir component yaptınız mesela onu da gönderebilirsiniz.

Bir sonraki yazımda görüşmek üzere.


Murat Bilginer
21 Şubat 1992'de doğdum. Endüstri Mühendisi olarak lisansımı 2016 yılında tamamladım. Industryolog Akademi - NGenius oluşumlarının kurucusuyum. Şu anda kendi şirketim Brainy Tech ile Web ve Mobil Geliştirme, AWS, Google Cloud Platform Sistemleri için DevOps, Big Data Analiz ve Görselleştirme hizmetleri sunmakta ve Online Eğitimler vermekteyiz.