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
jsximport 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
jsximport 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
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 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