« Tüm yayınlar

React 19 useOptimistic: Gerçek Formlarda Desenler ve Tuzaklar

React 19'un useOptimistic hook'u sunucu yanıtından önce sonucu gösterir. Yorum kutusu, beğeni butonu ve ayar formundan çıkan kalıcı desenler ve üç maliyetli tuzak.

React 19 ile gelen useOptimistic hook'u, bir işlem sunucu tarafından onaylanmadan önce sonucu kullanıcıya göstermeyi sağlıyor. API küçük olsa da doğru mental modeli kurmak zor: hook kalıcı bir durum tutmaz, yalnızca bir transition beklemedeyken gerçek state üzerinde geçici bir görünüm sunar. İşlem tamamlandığında React optimistik değeri atar ve gerçek veriden yeniden render eder; manuel geri alma gerekmez.

Üç pratik desen öne çıkıyor: yorum gönderiminde listeye anında ekleme (pending bayrağıyla soluk gösterim), beğeni butonunda sayaç güncellemesi (reducer güncel optimistik değeri aldığı için hızlı çift tıklamalar doğru birleşiyor) ve ayar formlarında anlık geri bildirim. Ancak üç tuzak defalarca zaman kaybettiriyor: addOptimistic'i düz bir onClick içinde çağırmak değerin anında kaybolmasına yol açıyor — bunun yerine form action veya startTransition içinde tetiklenmeli. İkinci tuzak, hook'un kendi hata kanalı olmaması; işlem hata verdiğinde optimistik değer sessizce kayboluyor, bu yüzden useActionState veya toast bildirimiyle eşleştirilmesi gerekiyor. Üçüncüsü, geçici kayıtlar için aynı sabit id kullanmak eşzamanlı girişlerin React tarafından birleştirilmesine neden oluyor; her optimistik öğeye benzersiz geçici anahtar verilmeli.

Yazar, ödeme veya yıkıcı silme gibi düşük güvenilirlikli yazma işlemlerinde useOptimistic kullanmaktan kaçındığını belirtiyor; garanti edilemeyen bir başarı göstermek, basit bir yükleniyor göstergesinden daha hızlı güven kaybına yol açıyor. Bu deneyimler, React 19 geçişi yapan ekipler için pratik bir kontrol listesi sunuyor.