0Pricing
React Academy · Pelajaran

Query, Mutasi, dan Subscription

Gunakan query dan mutasi bertipe tRPC dari komponen React dengan pelengkapan otomatis dan tipe kesalahan lengkap.

Query, Mutasi, dan Subscription adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Mendefinisikan Prosedur Kueri

Rangkai .input(zodSchema).query(async ({ input, ctx }) => ...) ke publicProcedure. Penangan menerima masukan yang telah divalidasi dan konteks permintaan. Kembalikan nilai apa pun yang dapat diserialisasikan: objek, larik, atau nilai primitif.

Tipe hasil disimpulkan secara otomatis dan menjadi tipe data kait useQuery yang sesuai pada klien.

Memanggil Kueri dari React

trpc.post.getById.useQuery({ id: '1' }) memanggil prosedur getById dalam router post. Kait ini mengembalikan objek hasil React Query yang sudah dikenal: { data, isLoading, isError, refetch }.

Objek masukan memiliki tipe statis: memberikan { id: 123 } ketika skema mengharapkan string akan menghasilkan kesalahan TypeScript yang ditangkap pada waktu pengembangan.

Mendefinisikan Prosedur Mutasi

Gunakan .input(zodSchema).mutation(async ({ input, ctx }) => ...) untuk operasi penulisan di sisi server: membuat, memperbarui, atau menghapus data. Mutasi dipanggil secara eksplisit, bukan dijalankan saat komponen dipasang.

Penangan mutasi memiliki akses ke seluruh konteks permintaan (termasuk sesi dari NextAuth) melalui ctx.

Memanggil Mutasi dari React

const { mutate, isLoading, error } = trpc.post.create.useMutation(). Panggil mutate({ title: 'New', content: '...' }) untuk memicu mutasi. Seperti useMutation milik React Query, mutasi ini tidak dijalankan saat komponen dipasang.

Teruskan panggilan balik onSuccess dan onError ke opsi useMutation untuk efek samping setelah mutasi.

Membatalkan Validitas Tembolok Setelah Mutasi

Untuk menyegarkan data kueri setelah mutasi berhasil, gunakan kait utilitas tRPC: const utils = trpc.useUtils(). Di dalam onSuccess, panggil utils.post.getAll.invalidate() untuk memicu pengambilan ulang daftar postingan.

Ini adalah padanan tRPC untuk queryClient.invalidateQueries() milik React Query dan mengikuti pola usang-lalu-ambil-ulang yang sama.

Validasi Masukan dengan Zod

tRPC menggunakan Zod untuk validasi masukan secara bawaan. Skema Zod dijalankan di server pada waktu proses dan menolak masukan yang tidak valid sebelum mencapai penangan Anda. Skema yang sama menyediakan tipe TypeScript untuk klien.

Peran ganda ini (validasi saat waktu proses + tipe TypeScript) menghilangkan duplikasi: Anda mendefinisikan kontrak sekali dalam Zod dan mendapatkan kedua jaminan keamanan tersebut secara gratis.

Pengelompokan Permintaan dengan httpBatchLink

Secara bawaan, tRPC menggunakan httpBatchLink yang mengelompokkan beberapa permintaan tRPC serentak menjadi satu permintaan HTTP. Beberapa panggilan useQuery dalam satu siklus render komponen dikirim dan diselesaikan secara bersamaan.

Hal ini secara signifikan mengurangi beban jaringan dibandingkan permintaan HTTP terpisah untuk setiap kueri pada halaman dengan banyak kebutuhan data.

Ikhtisar Langganan tRPC

Definisikan prosedur langganan: publicProcedure.subscription(async function*() { while (true) { yield await nextEvent(); } }). Langganan menggunakan generator asinkron dan memerlukan transportasi WebSocket.

Langganan ideal untuk fitur waktu nyata: notifikasi langsung, kursor penyuntingan kolaboratif, atau respons AI yang dialirkan.

Menyiapkan Transportasi WebSocket

Ganti httpBatchLink dengan gabungan httpBatchLink dan wsLink menggunakan splitLink: arahkan langganan ke wsLink serta kueri/mutasi ke httpBatchLink. Buat klien WebSocket dengan createWSClient({ url: 'ws://localhost:3000' }).

Transportasi hibrida ini berarti sebagian besar permintaan menggunakan pengelompokan HTTP yang efisien, sedangkan langganan menggunakan koneksi WebSocket yang persisten.

Memanggil Langganan dari React

trpc.notifications.onNew.useSubscription(undefined, { onData: (notification) => addToList(notification), onError: console.error }) berlangganan pada prosedur tersebut. Panggilan balik onData dipanggil untuk setiap nilai yang dihasilkan.

Langganan secara otomatis dibuat kembali jika WebSocket terputus lalu tersambung kembali.

Menggabungkan Kueri, Mutasi, dan Langganan

Halaman daftar waktu nyata dapat menggunakan kueri untuk memuat daftar awal, mutasi untuk menambahkan item, dan langganan untuk menerima penambahan langsung dari pengguna lain. Ketiganya memiliki tipe yang sama berdasarkan AppRouter dan dapat digabungkan secara alami.

Strategi pembatalan validitas tembolok bergantung pada pilihan Anda: pengambilan ulang penuh (invalidate setelah mutasi) atau pembaruan tembolok (utils.post.getAll.setData).

Mutasi tRPC dan Pembatalan Validitas Tembolok

Metode utilitas tRPC apa yang memicu pengambilan ulang kueri setelah mutasi berhasil?

Ringkasan Pelajaran

Definisikan kueri dengan .query() dan mutasi dengan .mutation(), yang keduanya divalidasi oleh skema Zod. Di klien, gunakan trpc.router.procedure.useQuery() dan useMutation(). Batalkan validitas kueri setelah mutasi dengan utils.procedure.invalidate(). Langganan menggunakan generator asinkron dan memerlukan wsLink untuk transportasi WebSocket.

Secara bawaan, httpBatchLink mengelompokkan kueri serentak menjadi satu permintaan HTTP.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Query, Mutasi, dan Subscription” gratis?

Ya — teks lengkap “Query, Mutasi, dan Subscription” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Query, Mutasi, dan Subscription”?

Gunakan query dan mutasi bertipe tRPC dari komponen React dengan pelengkapan otomatis dan tipe kesalahan lengkap. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Query, Mutasi, dan Subscription” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Masalah yang Diselesaikan tRPC
  2. Menyiapkan tRPC dengan React dan Next.js
  3. Query, Mutasi, dan Subscription
  4. Mengintegrasikan tRPC dengan React Query dan Autentikasi
← Kembali ke React Academy