React’te Çok Satırlı JSX Kullanımı

React’te JSX, bileşenlerin kullanıcı arayüzlerini tanımlamak için kullandığı özel bir sözdizimidir. Basit bir öğeyi döndürmek kolaydır; tek bir satırda yazılan JSX, parantez olmadan işlenebilir. Ancak, karmaşık bir yapıyı tanımlarken çok satırlı JSX kullanımı devreye girer ve bu durumda parantez kullanımı bir zorunluluk haline gelir.

Bir örnek üzerinden ilerleyelim. Aşağıdaki HTML yapısını bir React bileşenine dönüştürmek istediğinizi düşünün:

<article>
  <header>
    <h1>Hayatta İlham</h1>
  </header>
  <p>Her gün öğrenmek ve büyümek için yeni fırsatlar var.</p>
  <footer>
    <a href="https://example.com" target="_blank">Daha Fazlası</a>
  </footer>
</article>

Bu HTML yapısını React’te şu şekilde yazabilirsiniz:

function Inspiration() {
  return (
    <article>
      <header>
        <h1>Hayatta İlham</h1>
      </header>
      <p>Her gün öğrenmek ve büyümek için yeni fırsatlar var.</p>
      <footer>
        <a href="https://example.com" target="_blank">
          Daha Fazlası
        </a>
      </footer>
    </article>
  );
}

Yukarıdaki bileşende, HTML yapısının her bir kısmı bir JSX öğesi olarak tanımlanmıştır. Çok satırlı bir JSX ifadesi kullandığımız için return ifadesinin tamamı parantez içine alınmıştır. Bu hem React’in ifadeyi doğru işlemesini sağlar hem de kodunuzu düzenli bir şekilde okunabilir kılar.

React’te Değişkenlerle Dinamik Özellik Kullanımı

React bileşenlerinde, HTML öğelerine dinamik özellikler eklemek için JavaScript ifadeleri kullanılabilir. JSX, JavaScript kodunu doğrudan HTML özelliklerine bağlamayı mümkün kılar. Bu özellik, bileşenlerinizi daha modüler ve esnek hale getirir.

Bir kitap kartı örneği üzerinden ilerleyelim. Bir kitabın özelliklerini bir nesne içinde tanımlayalım:

const book = {
  title: 'React ile Modern Web Geliştirme',
  author: 'Jane Doe',
  cover: 'https://example.com/react-book-cover.jpg',
  width: '150px'
};

Bu bilgilerle bir React bileşeni oluşturarak kitabın görselini ve yazar bilgisini gösterebiliriz:

function BookCard() {
  return (
    <div>
      <img 
        src={book.cover} 
        alt={`${book.title} kitabının kapağı`} 
        width={book.width} 
      />
      <h2>{book.title}</h2>
      <p>{book.author}</p>
    </div>
  );
}

Bu bileşen, book nesnesindeki değerleri kullanarak dinamik bir kitap kartı oluşturur. src, alt ve width özellikleri görseli tanımlarken, başlık ve yazar bilgileri JSX içindeki {} kullanımıyla doğrudan HTML içine aktarılır.

React’te Fonksiyon Bileşenlerinde Mantık Kullanımı

React’te bir fonksiyon bileşeni, sadece bir return ifadesinden oluşmaz. Bileşen içinde, JSX’in döndürülmeden önce ihtiyaç duyduğu basit hesaplamalar ya da mantıksal işlemler de yapılabilir. Bu işlemler, bileşenin çalışması için gerekli veriyi hazırlamayı sağlar.

Fonksiyon bileşeni içinde mantık kullanmak için, işlemleri return ifadesinden önce tanımlamak gerekir. Örnek olarak, bir rastgele renk oluşturan bir bileşen tasarlayalım:

function RandomColorBox() {
  // Rastgele bir renk oluşturma işlemi
  const randomColor = `#${Math.floor(Math.random() * 16777215).toString(16)}`;
  
  // Hazırlanan rengi kullanarak bir div döndürme
  return (
    <div 
      style={{
        backgroundColor: randomColor,
        width: '200px',
        height: '200px',
        textAlign: 'center',
        lineHeight: '200px',
        color: '#fff'
      }}
    >
      {randomColor}
    </div>
  );
}

Bu örnekte, randomColor değişkeni JSX döndürülmeden önce tanımlanmıştır. Renk kodu rastgele oluşturulduktan sonra, bu değer hem arka plan rengi olarak kullanılmış hem de kullanıcıya görsel olarak gösterilmiştir.

Bir başka örnekle iyice pekiştirelim:

React’te Bir Bileşende Event Listener ve Event Handler Kullanımı

React bileşenlerinde, kullanıcı etkileşimlerine yanıt vermek için event handler (olay işleyici) fonksiyonları kullanılabilir. Bu fonksiyonlar, belirli bir kullanıcı etkileşimi gerçekleştiğinde devreye girer ve bileşenin istediğiniz şekilde davranmasını sağlar.

Örneğin, bir butona tıklama olayını ele alalım. Kullanıcı bir butona tıkladığında bir mesaj göstermek istiyorsunuz diyelim, bunu şöyle yapabilirsiniz:

function ClickableButton() {
  function handleClick() {
    alert('Düğmeye tıkladınız!');
  }

  return <button onClick={handleClick}>Beni Tıkla</button>;
}

Yukarıdaki örnekte, handleClick adlı bir fonksiyon tanımlanmıştır. Bu fonksiyon, buton tıklandığında çalışacak şekilde onClick özelliğine atanmıştır. Event handler fonksiyonları bileşen içinde tanımlanır ve konvansiyon olarak, olay türünü belirtmek için handle kelimesiyle başlar (örneğin, handleClick).

Event handler fonksiyonları JSX’e atanırken, fonksiyon adı parantezsiz olarak yazılır (handleClick). Eğer parantezle yazılırsa (handleClick()), fonksiyon doğrudan çağrılır ve olay gerçekleşmeden çalışır. Bu nedenle, aşağıdaki gibi bir kullanım hatalıdır:

function InvalidExample() {
  function handleClick() {
    alert('Bu hemen çalışır!');
  }

  return <button onClick={handleClick()}>Hatalı Tıklama</button>;
}

Yukarıdaki kod, buton daha tıklanmadan handleClick fonksiyonunu tetikleyecektir. Doğru kullanımda parantez kullanılmaz. Aşağıdaki örneği inceleyiniz:

React CodeMirror Editor – Submit and App

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu