Yükleniyor...

React Animasyonları

React animasyonları, modern web uygulamalarında kullanıcı deneyimini geliştirmek için kritik bir rol oynar. Bu animasyonlar, kullanıcı arayüzündeki bileşenler arasında geçişler, geri bildirimler ve etkileşimler sırasında akıcı görsellik sağlar. React tabanlı SPAlarda (Single Page Application), animasyonlar sayfalar arası geçişleri yumuşatır, kullanıcı etkileşimlerini vurgular ve uygulamanın daha duyarlı ve profesyonel görünmesini sağlar.
React animasyonları, bileşen tabanlı mimariyle uyumlu olacak şekilde uygulanmalıdır. useState ve useReducer gibi state yönetim yöntemleri, props aracılığıyla veri akışı, bileşen yaşam döngüsü ve yeniden kullanılabilir bileşen yapıları, animasyonların kontrolünde temel kavramlardır. Framer Motion ve React Spring gibi kütüphaneler, animasyonları deklaratif bir şekilde tanımlamayı, keyframes ve easing kontrolünü kolaylaştırır.
Bu eğitimde, React animasyonlarını en iyi uygulamalarla geliştirmeyi, prop drilling ve gereksiz yeniden renderlerden kaçınmayı, yeniden kullanılabilir ve performanslı bileşenler oluşturmayı öğreneceksiniz. Ayrıca animasyonlu listeler, modal pencereler ve etkileşimli UI öğeleri gibi gerçek dünya senaryoları ile pratik yapma fırsatı bulacaksınız. Bu bilgiler, projelerinizi hem kullanıcı deneyimi hem de performans açısından optimize etmenize yardımcı olacaktır.

Temel Örnek

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

function AnimasyonluKutu() {
const [goster, setGoster] = useState(false);

return (
<div style={{ textAlign: 'center', marginTop: '50px' }}>
<button onClick={() => setGoster(!goster)}>
{goster ? 'Gizle' : 'Göster'} </button>
{goster && (
<motion.div
initial={{ opacity: 0, scale: 0.5 }}
animate={{ opacity: 1, scale: 1 }}
exit={{ opacity: 0, scale: 0 }}
transition={{ duration: 0.5 }}
style={{
width: '100px',
height: '100px',
backgroundColor: '#4CAF50',
margin: '20px auto',
borderRadius: '10px'
}}
/>
)} </div>
);
}

export default AnimasyonluKutu;

Bu örnekte AnimasyonluKutu bileşeni, useState ile kutunun görünürlüğünü kontrol eder. Framer Motion, motion.div kullanılarak initial, animate ve exit durumlarıyla animasyonu yönetir. transition özelliği ile animasyon süresi belirlenir.
Bu yaklaşım, React’in ileri düzey kavramlarını gösterir: lokal state yönetimi, bileşen tabanlı mimari ve veri akışının öngörülebilirliği. Bileşenlerin ayrıştırılması ve key kullanımı, prop drilling ve gereksiz renderlerin önüne geçer. Benzer yöntem, modallar, tooltips ve interaktif butonlar gibi farklı bileşenlerde de rahatlıkla uygulanabilir.

Pratik Örnek

jsx
JSX Code
import React, { useState } from 'react';
import { motion, AnimatePresence } from 'framer-motion';

function GorevListesi() {
const [gorevler, setGorevler] = useState([]);
const [input, setInput] = useState('');

const gorevEkle = () => {
if (input.trim() !== '') {
setGorevler([...gorevler, { id: Date.now(), metin: input }]);
setInput('');
}
};

const gorevSil = (id) => {
setGorevler(gorevler.filter(g => g.id !== id));
};

return (
<div style={{ width: '300px', margin: '50px auto', textAlign: 'center' }}>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="Yeni görev"
style={{ padding: '8px', width: '70%' }}
/>
<button onClick={gorevEkle} style={{ padding: '8px' }}>Ekle</button> <AnimatePresence>
{gorevler.map((gorev) => (
<motion.div
key={gorev.id}
initial={{ opacity: 0, x: -50 }}
animate={{ opacity: 1, x: 0 }}
exit={{ opacity: 0, x: 50 }}
transition={{ duration: 0.3 }}
style={{
margin: '10px 0',
padding: '10px',
backgroundColor: '#f0f0f0',
borderRadius: '5px',
display: 'flex',
justifyContent: 'space-between'
}}
> <span>{gorev.metin}</span>
<button onClick={() => gorevSil(gorev.id)}>Sil</button>
</motion.div>
))} </AnimatePresence> </div>
);
}

export default GorevListesi;

GorevListesi bileşeni, AnimatePresence kullanarak liste elemanlarının giriş ve çıkış animasyonlarını kontrol eder. useState ile liste ve input kontrolü sağlanır, array’lerde doğrudan değişiklik yapılmaz. Her öğeye unique key atanması, React’in render optimizasyonunu destekler.
Bu yapı, dinamik listeler, modal pencereler ve interaktif bileşenler için idealdir. AnimatePresence ve motion.div kombinasyonu, animasyonların senkronize ve akıcı olmasını sağlar.

React animasyonları için en iyi uygulamalar: bileşenleri yeniden kullanılabilir kılmak, state yönetimini net tutmak ve veri akışını öngörülebilir yapmak. Prop drilling, gereksiz renderler ve state mutasyonlarından kaçınılmalıdır. Framer Motion ve React Spring, bileşen yaşam döngüsüne uyumlu optimize animasyonlar sağlar.
Yaygın hatalar: key atamamak, state’i doğrudan değiştirmek, fazla render. Memo, lazy loading ve code splitting ile performans artırılabilir. Güvenlik açısından, animasyonlu içeriklerde doğrulanmamış verilerin render edilmemesi gerekir. Bu uygulamalar, güvenli, performanslı ve sürdürülebilir animasyonlar sağlar.

📊 Referans Tablosu

React Element/Concept Description Usage Example
motion.div Framer Motion ile div animasyonu <motion.div animate={{ x: 100 }} />
AnimatePresence Bileşenlerin giriş/çıkış animasyonlarını yönetir <AnimatePresence>{items.map(item => <motion.div key={item.id} />)}</AnimatePresence>
initial/animate/exit Başlangıç, animasyon ve çıkış durumları <motion.div initial={{ opacity:0 }} animate={{ opacity:1 }} exit={{ opacity:0 }} />
transition Animasyon süresi ve easing kontrolü <motion.div transition={{ duration:0.5 }} />
useState Bileşen lokal state yönetimi const [state, setState] = useState(initialValue)
key Liste render optimizasyonu için benzersiz ID {items.map(item => <motion.div key={item.id} />)}

React animasyonları, kullanıcı deneyimini artıran ve uygulamaları daha duyarlı kılan temel araçlardır. Bu rehberde state yönetimi, lifecycle uyumu, yeniden kullanılabilir bileşen tasarımı ve performans optimizasyonu ele alınmıştır.
İleri adımlar: React Spring kullanımı, useMemo ile optimizasyon, lazy loading ve kompleks bileşen yapılarıyla çalışma. Pratik yaparak ve performansı izleyerek, profesyonel animasyonlar oluşturabilirsiniz. Kaynaklar: Framer Motion dokümantasyonu, ileri seviye React rehberleri, React toplulukları.

🧠 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