React Conditional Rendering Nedir ve Nasıl Yapılır?

Büşra Aktaş
folksdev
Published in
6 min readApr 5, 2024

Evet, her birimiz kod yazarken ihtiyacımıza göre farklı methodlar ve prensipler tercih edebiliyoruz. Fakat bazı methodlar vardır ki pratik çözümler sunarak sizi hızlandırır. React conditional rendering yöntemi adından da anlaşılacağı üzere koşullu renderlama tekniğidir. Koşullu durum biçimleri aslında JavaScript’in bir alt başlığıdır. Ayrıca tüm programlama dillerinde de kullanılan bir tekniktir. Bu yazıda belli bir proje kurgusu seçerek React’ta yapabileceğimiz conditional rendering tekniklerini inceleyeceğiz. Hadi geçelim!

Koşullu renderlama, modern web geliştirmede özellikle React kütüphanesi kullanılarak geliştirilen uygulamalarda temel bir konsepttir. Bu yaklaşım dinamik kullanıcı arayüzleri oluşturmanın yanı sıra, uygulama performansını ve kullanıcı deneyimini önemli ölçüde iyileştirebilir. Bu makalede koşullu renderlamanın ne olduğunu, neden önemli olduğunu ve React’te nasıl uygulanabileceğini detaylı bir şekilde inceliyoruz.

Koşullu Renderlamanın Tanımı ve Önemi

Koşullu renderlama, belirli koşulların sonucuna bağlı olarak farklı bileşenlerin veya içeriklerin gösterilmesi işlemidir. Bir uygulamanın farklı durumlarını yönetmek, kullanıcıya özelleştirilmiş içerikler sunmak veya erişim kontrolü sağlamak gibi güvenlik önlemleri için kullanılabilir.

Modern web uygulamaları, genellikle kullanıcı etkileşimleriyle dinamik olarak değişen içeriklere sahiptir. Kullanıcının eylemleri, uygulama durumu veya çevresel faktörler (örneğin, cihazın ekran boyutu) gibi koşullara dayanır. Geliştiricilerin bu koşulların ihtiyacına göre uygulama arayüzünü dinamik olarak değiştirmesi gerekmektedir. Koşullu renderlama ise bu dinamizmi sağlayan anahtar yöntemlerden biridir.

React’te Koşullu Renderlama Yöntemleri

React, koşullu renderlama yapmak için çeşitli JavaScript ifadelerini ve operatörlerini kullanma olanağı sunar. Bu yöntemler arasında if-else deyimleri, mantıksal && ve ternary (? :) operatörü bulunur. Her bir yöntemin kullanımı uygulanacak spesifik duruma, ihtiyaca ve tercihe bağlı olarak değişkenlik gösterir.

if-else Deyimleri

if-else en temel JavaScript akış kontrol mekanizmalarından biri olarak koşullu renderlama için güçlü bir yöntemdir. Özellikle iki veya daha fazla farklı koşul arasında seçim yaparken pratik ve yararlıdır.

Mantıksal Operatörü : &&

&& operatörü, bir koşul durumunu doğru biçimde sağladığında bir bileşeni veya içeriği renderlamak için kullanılır. Eğer koşul yanlışsa, React operatörün sağ tarafını göz ardı eder ve hiçbir şey renderlamaz. Bu yapı, kodun okunabilirliğini artırır dolayısıyla daha sade bir yapı sağlar.

Ternary Operatörü (? :)

Ternary operatörü, üç bölümden oluşur: bir koşul, koşul doğruysa çalıştırılacak ifade ve koşul yanlışsa çalıştırılacak ifade. Bu yöntem, iki farklı bileşen veya içerik arasında seçim yaparken kullanışlıdır.

Koşullu Renderlama Uygulamaları

Koşullu renderlama kullanıcı oturum durumları, erişim izinleri, özellik flag’leri, responsive tasarım ve daha pek çok durumda kullanılabilir. Örneğin, kullanıcı giriş yapmışsa kullanıcıya özel içerik gösterilebilir veya aksi halde giriş yapma formu sunulabilir. Bu yaklaşım, uygulamanın farklı kullanıcı tiplerine göre özelleştirilmesini ve böylece daha iyi bir kullanıcı deneyimi sunmasını sağlar.

Peki React Geliştirirken Conditional Rendering Nasıl Yapabiliriz?

React’ta koşullu renderlama yapabilmemizin temelini aslında JSX oluşturur. JSX (JavaScript XML), HTML benzeri sözdizimi kullanarak JavaScript içerisinde UI bileşenleri oluşturmayı sağlayan bir söz dizimidir. React ile birlikte kullanıldığında geliştiricilere JavaScript’in gücüyle birlikte arayüzleri daha sezgisel ve okunabilir bir şekilde ifade etme olanağı sunar.

JSX ve Koşullu Renderlama

JSX, aslında JavaScript koduna dönüştürülen bir sözdizimidir. Bu dönüştürme işlemi Babel gibi araçlar tarafından yapılmaktadır. JSX sayesinde geliştiriciler HTML benzeri bir yapı kullanarak UI bileşenlerini kolayca tanımlayabilirler. Conditional Rendering ise JSX içinde doğrudan JavaScript ifadeleri kullanılarak gerçekleştirilebilir. Bu da geliştirme sürecini oldukça esnek ve güçlü kılar.

Şimdi bir proje kurgusu belirleyerek 3 yöntem ile de örnekleri inceleyelim!

Proje kurgusu: E-Ticaret Web Uygulaması

Bu kurguda, bir e-ticaret platformu üzerinde farklı kullanıcı durumlarına bağlı olarak ürün sayfalarında çeşitli UI elementlerini dinamik olarak gösteren bir sistem geliştireceğiz. Üç temel durumu ele alacağız;

  1. Ürün Stokta Var: Kullanıcıya “Sepete Ekle” butonu gösterilecek.(isInStock)
  2. Ürün Stokta Yok: Kullanıcıya “Stoklara Geldiğinde Haber Ver” butonu gösterilecek. (!isInStock)
  3. Kullanıcı Giriş Yapmamış: Kullanıcıya “Giriş Yap” butonu ile birlikte özel indirimli satın alma seçeneği sunulacak. (isLoggedIn)

1. if-else

function ProductAction({ isLoggedIn, isInStock }) {
let actionComponent;

if (isInStock) {
// Eğer stokta varsa Sepete Ekle butonunu göster
actionComponent = <button>Add to Cart</button>;
} else if (isLoggedIn) {
// Eğer stokta yoksa ve kullanıcı giriş yaptıysa
// Stoklara Geldiğinde Haber ver butonunu göster
actionComponent = <button>Notify Me When In Stock</button>;
} else {
// Eğer kullanıcı giriş yapmadıysa Giriş yap
// özel indirimler kazan butonunu göster
actionComponent = <div><button>Log In</button> for exclusive discounts!</div>;
}

return <div>{actionComponent}</div>;
}

Yukarıdaki örnekte ürün stok durumu ve kullanıcı giriş durumuna göre dinamik olarak farklı aksiyon butonları gösterilmektedir. if-else sayesinde birden fazla koşulu sıralı bir şekilde değerlendirebilir ve her bir duruma uygun bir çıktı sağlayabiliriz.

2. Mantıksal && Operatörü

function ProductAvailability({ isInStock }) {
// isInStock == true
// !isInStock == false
return (
<div>
{isInStock && <button>Add to Cart</button>}
{!isInStock && <button>Notify Me When In Stock</button>}
</div>
);
}

Bu örnekte ürünün stok durumuna bağlı olarak ya “Sepete Ekle” ya da “Stoklara Geldiğinde Haber Ver” butonu gösterilir. Mantıksal && operatörü ile her bir koşul ve sonuç açıkça ve sade bir şekilde ifade edilir.

3. Ternary Operatörü

function UserAction({ isLoggedIn }) {
// isLoggedIn true ise Sepete ekle false ise
// Giriş yap butonunu göster
return (
<div>
// isLoggedIn true ise Sepete ekle false ise
// Giriş yap butonunu göster
{isLoggedIn ?
<button>Add to Cart</button> :
<div><button>Log In</button> for exclusive discounts!</div>
}
</div>
);
}

Burada kullanıcının giriş yapma durumuna bağlı olarak ya “Sepete Ekle” butonu gösterilir ya da kullanıcı girişi yapması durumunda özel indirimlerden faydalanabileceği belirtilir. Ternary operatörü ile iki farklı durum arasında net ve öz bir şekilde seçim yapılır.

React’te koşullu renderlama yaparken hangi yöntemin kullanılacağına karar vermek spesifik duruma, okunabilirlik tercihlerine ve kodun karmaşıklığına bağlıdır. Birazdan her bir yöntemin avantajlarını, dezavantajlarını ve hangi senaryolarda tercih edilmesi gerektiğini daha kapsamlı ve açıklayıcı bir şekilde ele alacağız.

1. if-else Deyimleri

Kullanım Senaryoları:

  • Birden fazla koşul ve çıktı varsa.
  • Karmaşık mantıksal akışlar gerektiren durumlar.
  • Önceden belirlenmiş değişkenlere bağlı olarak farklı bileşenlerin renderlanması gerektiğinde.

Avantajları:

  • Karmaşık koşulların yönetilmesinde esneklik sağlar.
  • Çok sayıda koşul ve farklı render yolları için uygundur.

Dezavantajları:

  • JSX içerisinde doğrudan kullanılamaz, render metodu ya da fonksiyonunun dışında tanımlanmalıdır.
  • Özellikle çok sayıda koşul ve dallanma varsa kodun okunabilirliğini azaltabilir.

2. Mantıksal && Operatörü

Kullanım Senaryoları:

  • Yalnızca bir koşul doğru olduğunda belirli bir içeriği göstermek istediğinizde daha uygundur.
  • Sade ve tek bir koşullu ifade ile çalışırken tercih edilir.

Avantajları:

  • Kodun sade ve okunabilir kalmasını sağlar.
  • JSX içinde doğrudan kullanılabilir dolayısıyla daha dinamik ve deklaratif bir yaklaşım sunar.

Dezavantajları:

  • Sadece tek bir koşul ve sonuç için uygundur. Birden fazla koşul ve çıktı gerektiren durumlar için ideal değildir.

3. Ternary Operatörü

Kullanım Senaryoları:

  • İki farklı bileşen veya içerik arasında seçim yapmak gerektiğinde.
  • Basit koşullu ifadeler için ve özellikle de koşulun true veya false durumuna bağlı olarak sadece iki olası çıktı varsa tercih edilir.

Avantajları:

  • JSX içinde doğrudan kullanılabilir bu yüzden inline koşullu renderlama için mükemmeldir.
  • Kodu kompakt ve okunabilir tutar.

Dezavantajları:

  • Karmaşık koşullu ifadeler için uygun değildir; okunabilirliği azaltabilir.
  • Birden fazla koşul ve çok sayıda olası çıktı gerektiren durumlar için ideal değildir.

Hangi Yöntemi Ne Zaman Kullanmalı?

  • Basit ve Tek Bir Koşul Var ise: Mantıksal && operatörü, kodun okunabilirliğini ve sıklığını artırır.
  • İki Olası Çıktı Arasında Seçim Yapılacaksa: Ternary operatörü, iki farklı çıktı arasında hızlı ve temiz bir seçim yapmanızı sağlar.
  • Karmaşık Koşullar ve Birden Fazla Çıktı Söz Konusu ise: if-else deyimleri, kompleks durumları yönetmede daha esnek bir yaklaşım sunar.

Sonuç olarak, koşullu renderlama yöntemlerinin her biri React uygulamalarında dinamik ve esnek kullanıcı arayüzleri oluşturmanın anahtarını sunar. Geliştiricilerin bu yöntemleri etkili bir şekilde kullanabilmeleri uygulamanın ihtiyaçlarına ve durumlarına en uygun çözümü bulmalarını sağlar. Her bir yöntemin avantajlarını ve sınırlılıklarını anlamak ise daha temiz, daha okunabilir ve daha bakımı kolay kod yazmanın yolunu açar.

Okuyan herkese React’ta Conditional Rendering nasıl yapılır? hakkında yardımcı olması dileğiyle 🍀 Düşüncelerinizi linkedin ve twitter hesaplarım üzerinden benimle paylaşabilirsiniz. 👩🏼‍💻

Buraya tıklayarak bana ulaşabilirsiniz🙋‍♀️️

Yazılarıma kahve ısmarlayarak destek olabilirsiniz☕️

--

--