Sorgular, Değişiklikler ve Abonelikler
Tam otomatik tamamlama ve hata türleriyle React bileşenlerinden tRPC'nin tür denetimli sorgularını ve değişikliklerini kullanın
Sorgular, Değişiklikler ve Abonelikler, 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.
Sorgu Prosedürü Tanımlama
publicProcedure üzerine .input(zodSchema).query(async ({ input, ctx }) => ...) zincirini ekleyin. İşleyici, doğrulanmış input'u ve istek bağlamını alır. Bir nesne, dizi veya ilkel değer gibi serileştirilebilir herhangi bir değer döndürün.
Dönüş türü otomatik olarak çıkarılır ve istemcideki karşılık gelen useQuery kancasının veri türü olur.
React'ten Sorgu Çağırma
trpc.post.getById.useQuery({ id: '1' }), post yönlendiricisindeki getById prosedürünü çağırır. Kanca, React Query'nin alışılmış sonuç nesnesini döndürür: { data, isLoading, isError, refetch }.
input nesnesi statik olarak türlendirilmiştir: şema bir dize beklerken { id: 123 } geçirmek, geliştirme sırasında yakalanan bir TypeScript hatasıdır.
Mutasyon Prosedürü Tanımlama
Sunucu tarafındaki veri yazma işlemleri için .input(zodSchema).mutation(async ({ input, ctx }) => ...) kullanın: veri oluşturma, güncelleme veya silme. Mutasyonlar bileşen oluşturulduğunda otomatik olarak çalışmak yerine açıkça çağrılır.
Mutasyon işleyicisi, ctx aracılığıyla tam istek bağlamına (NextAuth oturumu da dâhil) erişebilir.
React'ten Mutasyon Çağırma
const { mutate, isLoading, error } = trpc.post.create.useMutation(). Mutasyonu tetiklemek için mutate({ title: 'New', content: '...' }) çağrısını yapın. React Query'nin useMutation kancası gibi bu da bileşen oluşturulduğunda çalışmaz.
Mutasyon sonrası yan etkiler için onSuccess ve onError geri çağırmalarını useMutation seçeneklerine geçirin.
Mutasyon Sonrası Önbelleği Geçersiz Kılma
Başarılı bir mutasyondan sonra sorgu verilerini yenilemek için tRPC yardımcı kancasını kullanın: const utils = trpc.useUtils(). onSuccess içinde, gönderi listesinin yeniden alınmasını tetiklemek üzere utils.post.getAll.invalidate() çağrısını yapın.
Bu, tRPC'deki React Query eşdeğeri olan queryClient.invalidateQueries() yöntemidir ve aynı eskimiş sayma ve yeniden getirme düzenini izler.
Zod ile Input Doğrulama
tRPC, input doğrulaması için varsayılan olarak Zod kullanır. Zod şeması, çalışma zamanında sunucuda çalışır ve biçimi bozuk input'un işleyiciye ulaşmadan reddedilmesini sağlar. Aynı şema istemci için TypeScript türlerini de sağlar.
Bu iki işlev, tekrarları ortadan kaldırır: sözleşmeyi Zod'da bir kez tanımlarsınız ve hiçbir ek çaba harcamadan her iki güvenlik güvencesini de elde edersiniz.
httpBatchLink ile İstekleri Toplu İşleme
tRPC, varsayılan olarak birden fazla eşzamanlı tRPC isteğini tek bir HTTP isteğinde toplu hâle getiren httpBatchLink'i kullanır. Aynı bileşenin oluşturma döngüsündeki birden fazla useQuery çağrısı birlikte gönderilir ve birlikte çözümlenir.
Bu yöntem, bir sayfada birden fazla veri gereksinimi olduğunda her sorgu için ayrı HTTP istekleri göndermeye kıyasla ağ yükünü önemli ölçüde azaltır.
tRPC Aboneliklerine Genel Bakış
Bir abonelik prosedürü tanımlayın: publicProcedure.subscription(async function*() { while (true) { yield await nextEvent(); } }). Abonelikler eşzamansız üreteçleri kullanır ve bir WebSocket aktarımı gerektirir.
Abonelikler, anlık bildirimler, ortak çalışmalı düzenleme imleçleri veya akış hâlindeki yapay zekâ yanıtları gibi gerçek zamanlı özellikler için idealdir.
WebSocket Aktarımı Kurulumu
httpBatchLink'i splitLink kullanarak httpBatchLink ile wsLink birleşimiyle değiştirin: abonelikleri wsLink'e, sorgu ve mutasyonları httpBatchLink'e yönlendirin. WebSocket istemcisini createWSClient({ url: 'ws://localhost:3000' }) ile oluşturun.
Bu karma aktarım sayesinde isteklerin çoğu verimli HTTP toplu işlemesini kullanırken abonelikler kalıcı WebSocket bağlantılarını kullanır.
React'ten Abonelik Çağırma
trpc.notifications.onNew.useSubscription(undefined, { onData: (notification) => addToList(notification), onError: console.error }) prosedüre abone olur. onData geri çağırması, üretilen her değer için çağrılır.
WebSocket bağlantısı kesilip yeniden bağlandığında abonelik otomatik olarak yeniden oluşturulur.
Sorguları, Mutasyonları ve Abonelikleri Birleştirme
Gerçek zamanlı bir liste sayfası, başlangıç listesini yüklemek için bir sorgu, bir öğe eklemek için bir mutasyon ve diğer kullanıcılardan gelen canlı eklemeleri almak için bir abonelik kullanabilir. Bu üçünün türleri aynı AppRouter'a göre belirlenir ve doğal biçimde birlikte çalışır.
Önbellek geçersiz kılma stratejisi, tam yeniden getirmeyi (mutasyondan sonra geçersiz kılma) mi yoksa önbellek güncellemelerini mi (utils.post.getAll.setData) tercih ettiğinize bağlıdır.
tRPC Mutasyonu ve Önbellek Geçersiz Kılma
Bir mutasyon başarıyla tamamlandıktan sonra bir sorgunun yeniden alınmasını hangi tRPC yardımcı yöntemi tetikler?
Ders Özeti
Sorguları .query(), mutasyonları ise .mutation() ile tanımlayın; her ikisi de Zod şemalarıyla doğrulanır. İstemcide trpc.router.procedure.useQuery() ve useMutation() kullanın. Mutasyon sonrasında utils.procedure.invalidate() ile sorguları geçersiz kılın. Abonelikler eşzamansız üreteçleri kullanır ve WebSocket aktarımı için wsLink gerektirir.
httpBatchLink, eşzamanlı sorguları varsayılan olarak tek bir HTTP isteğinde toplu hâle getirir.
Sıkça Sorulan Sorular
“Sorgular, Değişiklikler ve Abonelikler” dersi ücretsiz mi?
Evet — “Sorgular, Değişiklikler ve Abonelikler” 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.
“Sorgular, Değişiklikler ve Abonelikler” dersinde ne öğreneceğim?
Tam otomatik tamamlama ve hata türleriyle React bileşenlerinden tRPC'nin tür denetimli sorgularını ve değişikliklerini 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.
“Sorgular, Değişiklikler ve Abonelikler” 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
- tRPC'nin Çözdüğü Sorun
- React ve Next.js ile tRPC Kurulumu
- Sorgular, Değişiklikler ve Abonelikler
- tRPC'yi React Query ve Kimlik Doğrulamayla Entegrasyon