2 dk okuma
State Yönetimi / React
1. useState vs useRef
useState: Değer değiştiğinde re-render tetikler. UI'da görünen veriler için.useRef: Değer değiştiğinde re-render tetiklemez, referans DOM elemanına erişim veya render'lar arası "hatırlanması gereken ama ekranı etkilemeyen" değerler için kullanılır (örneğin timer ID'si).
2. useEffect Bağımlılık Dizisi Tuzakları
useEffect(() => {
fetchData(userId);
}, [userId]); // userId değişmedikçe tekrar çalışmaz
Sık yapılan hatalar:
- Bağımlılık dizisini boş bırakıp içeride değişen bir değeri kullanmak (stale closure sorunu)
- Nesne veya array'i doğrudan dependency olarak vermek (her render'da yeni referans oluştuğu için sonsuz döngüye girer)
- Cleanup fonksiyonunu unutmak (
return () => {...})
3. Memoization: useMemo, useCallback, React.memo
useMemo: Pahalı bir hesaplamanın sonucunu cache'leruseCallback: Bir fonksiyonun referansını cache'ler (child component'e prop olarak geçerken gereksiz re-render'ı önlemek için)React.memo: Component'i sarıp, prop'lar değişmediyse re-render'ı atlar Önemli: Her yere memoization eklemek gerekmez — gereksiz kullanım kodu karmaşıklaştırır ve bazen performansı bile düşürür.
4. Prop Drilling vs Context API vs Redux/Zustand
- Prop drilling: Veriyi birçok ara component üzerinden geçirmek — küçük uygulamalarda sorun değil, büyüdükçe yönetilemez hale gelir.
- Context API: React'in yerleşik çözümü, orta ölçekli global state için yeterli.
- Redux/Zustand: Karmaşık state mantığı, zaman içinde debug edilebilirlik (Redux DevTools), büyük uygulamalar için.
Sık Sorulan Mülakat Soruları
- useState ile useRef arasındaki fark nedir, ne zaman hangisini kullanırsın?
- useEffect bağımlılık dizisinde nelere dikkat etmek gerekir?
- "Stale closure" nedir, useEffect'te nasıl ortaya çıkar?
- useMemo, useCallback ve React.memo arasındaki farklar nelerdir?
- Gereksiz memoization neden zararlı olabilir?
- Prop drilling nedir, ne zaman sorun yaratır?
- Context API ile Redux/Zustand arasında nasıl seçim yaparsın?
- Bir component'in gereksiz yere re-render olduğunu nasıl tespit edersin?