useState'te fonksiyonel güncelleme (setState(prev => ...)) ne zaman gerekir?
Cevap
State güncellemeleri asenkron ve toplu (batched) işlenir. Yeni değer bir önceki değere dayanıyorsa, render anındaki eski değeri kullanmak hatalı sonuç verir.
// Yanlış: üçü de aynı "sayi" değerini görür, sonuç +1
setSayi(sayi + 1);
setSayi(sayi + 1);
setSayi(sayi + 1);
// Doğru: her biri bir öncekinin sonucunu alır, sonuç +3
setSayi(s => s + 1);
setSayi(s => s + 1);
setSayi(s => s + 1);Fonksiyonel güncelleme ayrıca useEffect veya setInterval içinde eski değerin yakalanması (stale closure) sorununu da önler ve bağımlılık dizisini sadeleştirir.
İlgili React soruları
- Virtual DOM nedir ve reconciliation nasıl çalışır?
- Listelerde key prop neden önemlidir? Index kullanmak neden sorunludur?
- Controlled ve uncontrolled component farkı nedir?
- useEffect bağımlılık dizisi nasıl çalışır?
- useMemo ile useCallback arasındaki fark nedir?
- Gereksiz render'ları nasıl tespit eder ve önlersiniz?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.