SWR ile Değişiklik ve İyimser Güncellemeler
İyimser kullanıcı arayüzü ve otomatik geri alma ile yazma işlemleri için mutate() ve useSWRMutation kullanın
SWR ile Değişiklik ve İyimser Güncellemeler, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. 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.
mutate: Anahtara Göre Yeniden Doğrulama
swr paketindeki global mutate işlevi, uygulamanızın herhangi bir yerinden herhangi bir önbellek anahtarı için yeniden doğrulamayı tetiklemenizi sağlar: mutate('/api/user'), tüm useSWR('/api/user') kancalarının veriyi yeniden getirmesine neden olur.
Şununla içe aktarın: import { mutate } from 'swr'. Bu, doğrudan bağlı mutate işlevine erişimi olan bir bileşenin dışındaki sunucu eyleminden sonra verileri geçersiz kılmak için yararlıdır.
Veriyle mutate: Yeniden Getirmeden Önbelleği Güncelleme
mutate işlevine ikinci bağımsız değişken olarak veri gönderin: mutate('/api/user', updatedUser), ağ isteği yapmadan önbelleği hemen updatedUser olarak ayarlar. Buna bazen yerel değişiklik adı verilir.
İyimser güncellemeden sonra SWR'nin yeniden veri getirmesini önlemek için üçüncü bağımsız değişken olarak { revalidate: false } ekleyin.
useSWRMutation: Açık Tetikleyiciler İçin
useSWRMutation, otomatik veri getirme yerine kullanıcı tarafından başlatılan değişiklik işlemleri (form gönderimleri, düğme tıklamaları) için tasarlanmıştır. Bileşen bağlandığında çalışmaz; yalnızca trigger() çağrıldığında çalışır.
swr/mutation paketinden içe aktarın: const { trigger, isMutating, data, error } = useSWRMutation('/api/post', sendRequest).
useSWRMutation Veri Getirme İşlevi İmzası
useSWRMutation için veri getirme işlevi (key, { arg }) değerlerini alır; arg, trigger() işlevine gönderilen değerdir. Örnek: async (url, { arg: newPost }) => fetch(url, { method: 'POST', body: JSON.stringify(newPost) }).
Değişiklik işlemini gönderi verisini arg olarak çalıştırmak için trigger({ title: 'New Post', content: '...' }) çağrısını yapın.
isMutating Durumu
useSWRMutation içindeki isMutating, mutasyon isteği devam ederken true değerindedir. Gönderme düğmelerini devre dışı bırakmak ve istek sırasında yükleme göstergeleri görüntülemek için kullanarak yinelenen gönderimleri önleyebilirsiniz.
Bu, aksi hâlde useState ile yönetmeniz gereken elle tutulan isSubmitting durum değişkeninin yerini alır.
İyimser Güncellemeler Açıklanıyor
İyimser güncelleme, sunucu değişikliği onaylamadan önce beklenen sonucu kullanıcı arayüzüne hemen uygular. Sunucu başarılı olursa başka bir işlem gerekmez. İşlem başarısız olursa güncelleme önceki duruma geri alınır.
Bu kalıp, kullanıcı arayüzlerinin anında tepki veriyormuş gibi görünmesini sağlar: POST yanıtını beklemeden bir beğen düğmesi hemen tıklanmış görünür.
SWR ile İyimser Güncellemeler
mutate(key, newData, { optimisticData: optimisticValue, rollbackOnError: true }) kullanın. SWR, önbelleği hemen optimisticValue değerine ayarlar, yeniden doğrulama isteğini gönderir ve istek hata verirse önceki değere geri döner.
rollbackOnError: true seçeneği, doğru çalışma açısından zorunludur: bu seçenek olmadan başarısız bir mutasyon, güncelliğini yitirmiş iyimser veriyi önbellekte bırakır.
Hata Durumunda Otomatik Geri Alma
rollbackOnError: true ayarlandığında ve mutasyon reddedildiğinde SWR, önbelleği iyimser güncellemeden önce alınan anlık görüntüye otomatik olarak geri döndürür. Elle geri alma kodu yazmanız gerekmez.
Ayrıca, mutasyon yanıtının gövdesi useSWR veri biçimiyle eşleşmiyorsa, yanıtın önbelleği yanlış biçimde güncellemesini önlemek için populateCache: false ayarlayın.
Bağlı mutate ile Genel mutate Karşılaştırması
useSWR, bağlı bir mutate işlevi döndürür: const { data, mutate } = useSWR('/api/user', fetcher). Bu bağlı mutate, '/api/user' anahtarını otomatik olarak hedefler; anahtarı yeniden geçirmeniz gerekmez.
Veri gösterimini yöneten bileşenlerin içinde bağlı mutate kullanın. İlişkisiz bir bileşenden veya yardımcı işlevden bir anahtarı geçersiz kılmanız gerektiğinde swr paketindeki genel mutate işlevini kullanın.
React Query Mutasyonlarıyla Karşılaştırma
React Query'nin useMutation işlevi, benzer bir trigger/isMutating kalıbına sahiptir. Temel farklar şunlardır: React Query'de queryClient.invalidateQueries ile birlikte kullanılan onSuccess geri çağırması, deyimsel önbellek geçersiz kılma kalıbıdır. SWR ise önbellek güncellemeleri için doğrudan mutate işlevini kullanır.
Her ikisi de iyimser güncellemeleri ve geri almayı destekler, ancak API biçimleri farklıdır. Birine hâkim olan ekipler diğerini hızlıca öğrenebilir.
Mutasyon Sonrası Önbellek Stratejisi
Başarılı bir mutasyondan sonra üç seçeneğiniz vardır: mutate(key) çağırarak verileri yeniden çekmek, yanıt gövdesiyle önbelleği güncellemek (API güncellenmiş kaynağı döndürüyorsa) veya iyimser güncellemeleri yeniden doğrulamayla birleştirmek.
Liste mutasyonlarında (bir öğe eklerken) yeni öğeyi listenin sonuna eklemek için önbelleği elle güncelleyin, ardından sunucu durumunu doğrulamak üzere yeniden doğrulama yapın. Böylece verileri tutarlı tutarken listenin tamamını yeniden çekmekten kaçınabilirsiniz.
İyimser Güncellemenin Geri Alınması
Bir iyimser güncellemeyi hata durumunda otomatik olarak geri almak için SWR'nin mutate işlevinde hangi seçeneği ayarlamanız gerekir?
Ders Özeti
Global mutate(key) yeniden doğrulamayı tetikler; mutate(key, data) yeniden veri çekmeden önbelleği günceller. useSWRMutation, trigger(), isMutating durumu ve extraArg desteğiyle kullanıcı tarafından açıkça başlatılan mutasyonları yönetir. optimisticData ve rollbackOnError: true ile yapılan iyimser güncellemeler, otomatik hata kurtarmayla kullanıcı arayüzlerinin anında tepki veriyormuş gibi görünmesini sağlar.
useSWR'den gelen bağlı mutate kendi anahtarını hedefler; swr paketindeki genel mutate her yerde çalışır.
Sıkça Sorulan Sorular
“SWR ile Değişiklik ve İyimser Güncellemeler” dersi ücretsiz mi?
Evet — “SWR ile Değişiklik ve İyimser Güncellemeler” 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.
“SWR ile Değişiklik ve İyimser Güncellemeler” dersinde ne öğreneceğim?
İyimser kullanıcı arayüzü ve otomatik geri alma ile yazma işlemleri için mutate() ve useSWRMutation 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 3. dersidir.
“SWR ile Değişiklik ve İyimser Güncellemeler” 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
- SWR'nin Temel Kavramları: Eski Veriyi Sunup Yenileme
- useSWR Kancası: Veri Alma, Yükleme ve Hata Durumları
- SWR ile Değişiklik ve İyimser Güncellemeler
- SWR ve React Query: Doğru Aracı Seçme