~/zafer
Tüm yazılara dön
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'ler
  • useCallback: 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?