React Query ve Zustand ile İyimser Kalıplar
Yapılandırılmış iyimser kullanıcı arayüzü iş akışları için React Query'nin onMutate/onError/onSettled geri çağırmalarını ve Zustand'ı kullanın
React Query ve Zustand ile İyimser Kalıplar, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
React Query useMutation Genel Bakışı
React Query'nin useMutation kancası, iyimser güncellemeler için üç yaşam döngüsü geri çağrısıyla yerleşik bir altyapı sunar: onMutate (değişiklik işleminden önce çalışır ve bir bağlam nesnesi döndürür), onError (başarısızlıkta çalışır ve bağlamı alır) ve onSettled (başarılı veya başarısız her durumda çalışır). Bu yapı özellikle iyimser desenler için tasarlanmıştır.
onMutate: İyimser Güncelleme Aşaması
onMutate içinde üç adım gerçekleştirirsiniz: önce etkilenen veriler için devam eden sorguları iptal edin (await queryClient.cancelQueries({ queryKey })), ardından mevcut önbelleğin anlık görüntüsünü alın (queryClient.getQueryData(queryKey)) ve son olarak önbelleğe iyimser güncellemeyi uygulayın (queryClient.setQueryData(queryKey, updater)). Anlık görüntüyü bağlam olarak döndürün.
onError: Bağlamla Geri Alma
onError geri çağrısı hatayı, değişiklik işlemi değişkenlerini ve onMutate tarafından döndürülen bağlamı alır. Geri almak için bağlamı kullanın: queryClient.setQueryData(queryKey, context.previousData). Bağlam, onMutate içinde alınan anlık görüntü ile onError içindeki geri alma işlemi arasındaki köprüdür.
onSettled: Eşzamanlama için Yeniden Getirme
onSettled geri çağrısı, işlem başarılı veya başarısız olsa da çalışır. Sorguyu yeniden getirmek ve sunucu durumuyla eşitlemek için bunu kullanın: queryClient.invalidateQueries({ queryKey }). Böylece herhangi bir değişiklik işleminden sonra — işlem başarılı olmuşsa (sunucu verileri dönüştürmüş olabilir) veya başarısız olmuşsa (geri alma tamamlanmıştır) — sonunda sunucudaki gerçek durumla uyumlanırsınız.
React Query ile İyimser Yapılacak Değiştirme
Pratik bir örnek olarak bir yapılacak öğesinin tamamlanma durumunu değiştirmeyi ele alalım. onMutate içinde yapılacaklar listesinin anlık görüntüsünü alın, ardından önbellekteki ilgili yapılacak öğesini güncelleyin. onError içinde bağlamdaki anlık görüntüyü geri yükleyin. onSettled içinde yeniden getirme yapmak için yapılacaklar sorgusunu geçersiz kılın. Kullanıcı değişikliği anında görür; sunucu ise arka planda eşitlenir.
Zustand ile İyimser Güncellemeler
Bir Zustand durum deposunda iyimser güncellemeler oldukça basittir: öğeyi depoda hemen güncelleyen ve ardından API'yi çağıran updateItem(id, changes) eylemini oluşturun. API başarısız olursa başka bir revertItem(id, previousState) eylemi çağırın. Zustand'ın senkron durum güncellemeleri, iyimser adımın anında gerçekleşmesini sağlar.
Karmaşık Güncellemeler için Zustand ile Immer
İç içe geçmiş Zustand durumunu iyimser olarak güncellerken, temiz değişiklikler için Immer'ın üretim işlevini kullanın: set(produce(state => { state.items[id] = { ...state.items[id], ...changes } })). Immer, değiştirilebilir söz dizimiyle değişmez güncellemeleri yönetir; böylece karmaşık iç içe durum değişiklikleri okunabilir ve güvenli olur.
React 19 useOptimistic Kancası
React 19, Sunucu Eylemleri içinde iyimser güncellemeler için yerleşik bir kanca olarak useOptimistic(state, updateFn) özelliğini kullanıma sundu. const [optimisticState, addOptimistic] = useOptimistic(items, (state, newItem) => [...state, newItem]). addOptimistic(newItem) çağrıldığında sunucu eylemi eşzamansız olarak çalışırken kullanıcı arayüzü hemen güncellenir.
useOptimistic ile Otomatik Geri Alma
useOptimistic geri alma işlemini otomatik olarak yönetir. Sunucu Eylemi tamamlandığında (başarılı veya hatalı biçimde), React iyimser durumu geri alır ve sunucudan gelen gerçek durumu uygular. El ile geri alma mantığı yazmanız gerekmez; React, eylemin Suspense sınırı içindeki iyimser güncellemenin yaşam döngüsünü yönetir.
Üç Yaklaşımın Karşılaştırılması
El ile iyimser güncellemeler tam denetim sağlar ancak çok sayıda kalıp kod gerektirir. React Query onMutate/onError/onSettled, otomatik eşzamanlama için sorgu önbelleğiyle bütünleşir. useOptimistic, Sunucu Eylemleri için en basit seçenektir ancak React 19 ve sunucu eylemi mimarisi gerektirir. Seçiminizi veri katmanınıza göre yapın: basit yerel durum için el ile yaklaşım, REST API'leri için React Query, RSC/Sunucu Eylemleri için useOptimistic.
Doğru Deseni Seçme
İyimser bir desen seçerken mimarinizi göz önünde bulundurun. Uygulamanızın tamamında React Query kullanıyorsanız onMutate deseni tutarlıdır ve önbelleği dikkate alır. Genel durum için Zustand kullanıyorsanız eylem tabanlı desen doğal biçimde uyum sağlar. React 19 ve Sunucu Eylemleri kullanıyorsanız useOptimistic doğal seçimdir. Tek bir uygulama içinde desenleri karıştırmak yaygın ve kabul edilebilir bir durumdur.
React Query onMutate Geri Dönüş Değeri
React Query'de onError içinde geri almayı etkinleştirmek için onMutate geri çağrısı ne döndürmelidir?
Ders Özeti: İyimser Desenler
React Query useMutation; onMutate ile sorguları iptal eder, anlık görüntüyü alır, iyimser güncellemeyi uygular ve bağlamı döndürür; onError ile bağlamdaki anlık görüntüyü geri yükler; onSettled ile yeniden getirme yapmak için sorguyu geçersiz kılar. Zustand iyimser güncellemeleri önce durum eylemini, ardından API'yi çağırır ve başarısızlıkta geri alır. React 19 useOptimistic, Sunucu Eylemleri içinde otomatik geri alma sağlar. Veri katmanı mimarinize uyan deseni seçin.
Sıkça Sorulan Sorular
“React Query ve Zustand ile İyimser Kalıplar” dersi ücretsiz mi?
Evet — “React Query ve Zustand ile İyimser Kalıplar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“React Query ve Zustand ile İyimser Kalıplar” dersinde ne öğreneceğim?
Yapılandırılmış iyimser kullanıcı arayüzü iş akışları için React Query'nin onMutate/onError/onSettled geri çağırmalarını ve Zustand'ı kullanın React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“React Query ve Zustand ile İyimser Kalıplar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İyimser Kullanıcı Arayüzü Nedir ve Ne Zaman Kullanılır
- İyimser Güncellemeleri Elle Uygulama
- Hata Durumunda Geri Alma ve Çakışma Çözümü
- React Query ve Zustand ile İyimser Kalıplar