Yükleniyor...

Koşullu Render

Koşullu render, React uygulamalarında kullanıcı arayüzünün farklı durumlara göre dinamik olarak değişmesini sağlayan temel bir tekniktir. Sabit içerikler yerine, bileşenler state, props veya fonksiyonların döndürdüğü değerler temelinde farklı çıktılar üretebilir. Bu yaklaşım, kullanıcı giriş durumları, hata mesajları, yetki seviyelerine göre dashboardlar ve gerçek zamanlı veri güncellemeleri gibi senaryolarda kritik öneme sahiptir. Modern tek sayfa uygulamalarında (SPA) kullanıcı deneyimini akıcı, hızlı ve etkileşimli hale getirmek için koşullu render vazgeçilmezdir.
React’te koşullu render genellikle ternary operator (? :), mantıksal AND (&&) operatörü veya özel yardımcı bileşenler aracılığıyla gerçekleştirilir. Bu kavram, React’in temel taşları olan bileşen yapısı, state yönetimi, tek yönlü veri akışı ve yaşam döngüsü ile doğrudan bağlantılıdır. Koşullu render’ı doğru şekilde kullanabilmek, bileşenlerin yeniden kullanılabilirliğini artırır, kod karmaşasını azaltır ve JSX içerisindeki gereksiz tekrarlardan kaçınmayı sağlar.
Bu konuyu öğrenen geliştirici, state veya props’a bağlı olarak elementlerin nasıl kontrol edileceğini, render performansının nasıl optimize edileceğini ve koşullu logiğin fonksiyonel veya sınıf bileşenlerinde nasıl düzgün bir şekilde uygulanacağını öğrenecektir. Ayrıca prop drilling, state mutasyonları ve gereksiz yeniden render gibi yaygın hatalardan kaçınma teknikleri konusunda da bilgi sahibi olacaktır. Modern web uygulamalarında ve SPA’larda kullanıcı arayüzünü dinamik ve esnek tutmak için koşullu render vazgeçilmez bir araçtır.

Temel Örnek

jsx
JSX Code
import React, { useState } from 'react';

function KullaniciDurumu() {
const [girisYapildi, setGirisYapildi] = useState(false);

const toggleGiris = () => {
setGirisYapildi(prev => !prev);
};

return (
<div style={{ padding: '20px', fontFamily: 'Arial' }}> <h2>Kullanıcı Durumu</h2>
{girisYapildi ? ( <p>Hoşgeldiniz, kullanıcı!</p>
) : ( <p>Lütfen giriş yapınız.</p>
)}
<button onClick={toggleGiris} style={{ marginTop: '10px' }}>
{girisYapildi ? 'Çıkış Yap' : 'Giriş Yap'} </button> </div>
);
}

export default KullaniciDurumu;

Bu temel örnekte, koşullu render fonksiyonel bir bileşen üzerinden gösterilmiştir. girisYapildi adındaki state, useState hook’u ile yönetilmektedir ve değerini tersine çeviren toggleGiris fonksiyonu, doğrudan state’i değiştirmek yerine setter kullanarak güvenli bir şekilde render tetikler. JSX içerisindeki {girisYapildi ? ... : ...} ternary operatörü ile kullanıcıya doğru mesaj gösterilmektedir.
Buton da aynı şekilde state’e bağlı olarak metin değiştirir. Bu desen, SPA’larda arayüzün hızlı ve doğru tepki vermesini sağlar. İleri düzey uygulamalarda bu yapı, birden fazla koşul veya API’den gelen veriler ile genişletilebilir, böylece kod okunabilir, tekrar kullanılabilir ve ölçeklenebilir hale gelir. React best practice olarak, state mutasyonlarından kaçınmak ve JSX içerisindeki karmaşık koşulları küçük, tekrar kullanılabilir bileşenlerde toplamak önerilir.

Pratik Örnek

jsx
JSX Code
import React, { useState, useEffect } from 'react';

function DashboardPaneli() {
const [kullanici, setKullanici] = useState(null);
const [yukleniyor, setYukleniyor] = useState(true);

useEffect(() => {
setTimeout(() => {
setKullanici({ isim: 'Ahmet', rol: 'admin' });
setYukleniyor(false);
}, 2000);
}, []);

if (yukleniyor) {
return <p>Kullanıcı verileri yükleniyor...</p>;
}

return (
<div style={{ padding: '20px', fontFamily: 'Arial' }}> <h2>Dashboard</h2>
{kullanici.rol === 'admin' ? ( <p>Hoşgeldiniz, yönetici {kullanici.isim}!</p>
) : ( <p>Hoşgeldiniz, {kullanici.isim}!</p>
)}
{kullanici.rol !== 'admin' && <p>Yönetici erişimi sınırlı.</p>} </div>
);
}

export default DashboardPaneli;

Bu pratik örnek, koşullu render’ı daha gerçek bir uygulama senaryosunda gösterir. kullanici ve yukleniyor state’leri ile arayüz kontrol edilir. useEffect hook’u API’den veri çekiyormuş gibi simüle edilmiştir. Yükleme süresi boyunca “Kullanıcı verileri yükleniyor...” mesajı gösterilerek kullanıcıya uygun geribildirim sağlanır.
kullanici.rol koşulu, farklı erişim seviyelerine göre içerik gösterir. {kullanici.rol !== 'admin' && <p>...</p>} yapısı, ternary operatörü kullanmadan, sadece koşul sağlandığında elementin render edilmesini sağlar. Bu yaklaşım JSX’i sade ve okunabilir kılar. Kod, state mutasyonundan kaçınır, veri akışı tek yönlüdür ve bileşenler yeniden kullanılabilir şekilde tasarlanmıştır. Render işlemleri optimize edilmiş ve bakım kolaylaştırılmıştır.

React’te koşullu render için iyi uygulamalar ve yaygın hatalar:

  • Bileşenleri küçük ve odaklı tutun, JSX’te karmaşık koşullardan kaçının.
  • Uzun veya tekrarlayan koşullar için yardımcı bileşenler oluşturun.
  • Prop drilling’i sınırlayın; global state için Context API veya özel hook’lar kullanın.
  • State’i doğrudan değiştirmek yerine setter veya güncelleme fonksiyonları kullanın.
  • React.memo, useMemo ve useCallback ile gereksiz renderları engelleyin.
  • Debug için React DevTools ve console log’ları kullanın.
  • Kullanıcı verilerini render etmeden önce doğrulayın, XSS gibi güvenlik risklerini önleyin.

📊 Referans Tablosu

React Element/Concept Description Usage Example
Ternary Operatörü İki seçenek arasında koşula bağlı seçim yapar {girisYapildi ? <p>Giriş Yapıldı</p> : <p>Giriş Yapılmadı</p>}
Mantıksal AND Render Koşul doğru ise element render edilir {kullanici && <p>Hoşgeldiniz {kullanici.isim}</p>}
useState Fonksiyonel bileşenlerde state yönetimi sağlar const [girisYapildi, setGirisYapildi] = useState(false)
useEffect Yan etkileri yönetir, ör: veri çekme useEffect(() => { fetchData() }, [])
Koşullu Bileşenler Koşullu logic’i ayrı bileşenlerde kapsüller function Mesaj({ rol }) { return rol==='admin'?<Admin />:<Kullanici /> }

Özet ve sonraki adımlar: Koşullu render, React uygulamalarında dinamik ve kullanıcıya duyarlı arayüzler oluşturmak için kritik bir tekniktir. Bu konu, SPA’ların ölçeklenebilir ve yeniden kullanılabilir bileşenlerle tasarlanmasına olanak sağlar.
Sonraki konular olarak, Redux veya Context API ile gelişmiş state yönetimi, memoizasyon ve lazy loading ile performans optimizasyonu ve birim testleri ile bileşen entegrasyonu önerilir. Koşullu render pratiği, kodun temiz, yönetilebilir ve tekrar kullanılabilir olmasını sağlar. Kaynaklar olarak resmi React dökümantasyonu, ileri seviye hook örnekleri ve dinamik dashboard uygulamaları incelenebilir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek