React Academy · Pelajaran

Pertanyaan, Mutasi dan Langganan

Gunakan pertanyaan dan mutasi bertip tRPC daripada komponen React dengan autolengkap penuh serta jenis ralat.

Pelajaran 3 daripada 413 langkah

Pertanyaan, Mutasi dan Langganan ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Mentakrifkan Prosedur Pertanyaan

Rantaikan .input(zodSchema).query(async ({ input, ctx }) => ...) pada publicProcedure. Pengendali menerima masukan yang telah disahkan dan konteks permintaan. Pulangkan sebarang nilai yang boleh disiri: objek, tatasusunan atau primitif.

Jenis pulangan disimpulkan secara automatik dan menjadi jenis data bagi cangkuk useQuery yang sepadan pada klien.

Memanggil Pertanyaan daripada React

trpc.post.getById.useQuery({ id: '1' }) memanggil prosedur getById dalam penghala post. Cangkuk ini memulangkan objek hasil React Query yang biasa: { data, isLoading, isError, refetch }.

Objek masukan ditaip secara statik: memberikan { id: 123 } apabila skema menjangkakan rentetan menghasilkan ralat TypeScript yang dikesan pada masa pembangunan.

Mentakrifkan Prosedur Mutasi

Gunakan .input(zodSchema).mutation(async ({ input, ctx }) => ...) untuk operasi penulisan pada pelayan: mencipta, mengemas kini atau memadam data. Mutasi dipanggil secara eksplisit dan bukannya dijalankan secara automatik apabila komponen dipasang.

Pengendali mutasi mempunyai akses kepada konteks permintaan penuh (termasuk sesi daripada NextAuth) melalui ctx.

Memanggil Mutasi daripada React

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

Hantar panggil balik onSuccess dan onError kepada pilihan useMutation untuk melaksanakan kesan sampingan selepas mutasi.

Membatalkan Kesahan Cache Selepas Mutasi

Untuk memuat semula data pertanyaan selepas mutasi berjaya, gunakan cangkuk utiliti tRPC: const utils = trpc.useUtils(). Dalam onSuccess, panggil utils.post.getAll.invalidate() untuk mencetuskan pengambilan semula senarai kiriman.

Ini ialah padanan tRPC bagi queryClient.invalidateQueries() React Query dan mengikut corak lapuk-dan-muat-semula yang sama.

Pengesahan Masukan dengan Zod

tRPC menggunakan Zod untuk pengesahan masukan secara lalai. Skema Zod dijalankan pada pelayan semasa masa jalan dan menolak masukan yang tidak sah sebelum masukan itu sampai kepada pengendali anda. Skema yang sama menyediakan jenis TypeScript untuk klien.

Peranan dwi ini (pengesahan masa jalan + jenis TypeScript) menghapuskan penduaan: anda mentakrifkan kontrak sekali sahaja dalam Zod dan memperoleh kedua-dua jaminan keselamatan secara percuma.

Pengumpulan Permintaan dengan httpBatchLink

Secara lalai, tRPC menggunakan httpBatchLink yang mengumpulkan beberapa permintaan tRPC serentak ke dalam satu permintaan HTTP. Beberapa panggilan useQuery dalam kitaran pemaparan komponen yang sama dihantar dan diselesaikan bersama.

Ini mengurangkan beban berlebihan rangkaian dengan ketara berbanding permintaan HTTP berasingan untuk setiap pertanyaan pada halaman yang mempunyai banyak keperluan data.

Gambaran Keseluruhan Langganan tRPC

Takrifkan prosedur langganan: publicProcedure.subscription(async function*() { while (true) { yield await nextEvent(); } }). Langganan menggunakan penjana tak segerak dan memerlukan pengangkutan WebSocket.

Langganan sesuai untuk ciri masa nyata: pemberitahuan langsung, kursor penyuntingan kolaboratif atau respons AI penstriman.

Persediaan Pengangkutan WebSocket

Gantikan httpBatchLink dengan gabungan httpBatchLink dan wsLink menggunakan splitLink: halakan langganan kepada wsLink dan pertanyaan/mutasi kepada httpBatchLink. Cipta klien WebSocket dengan createWSClient({ url: 'ws://localhost:3000' }).

Pengangkutan hibrid ini bermaksud kebanyakan permintaan menggunakan pengumpulan HTTP yang cekap, manakala langganan menggunakan sambungan WebSocket yang berterusan.

Memanggil Langganan daripada React

trpc.notifications.onNew.useSubscription(undefined, { onData: (notification) => addToList(notification), onError: console.error }) melanggan prosedur tersebut. Panggil balik onData dipanggil bagi setiap nilai yang dijana.

Langganan diwujudkan semula secara automatik jika WebSocket terputus dan bersambung semula.

Menggabungkan Pertanyaan, Mutasi dan Langganan

Halaman senarai masa nyata mungkin menggunakan pertanyaan untuk memuatkan senarai awal, mutasi untuk menambah entri dan langganan untuk menerima penambahan langsung daripada pengguna lain. Ketiga-tiganya ditaip berdasarkan AppRouter yang sama dan bergabung secara semula jadi.

Strategi pembatalan cache bergantung pada sama ada anda lebih suka pengambilan semula penuh (batalkan selepas mutasi) atau kemas kini cache (utils.post.getAll.setData).

Mutasi tRPC dan Pembatalan Kesahan Cache

Kaedah utiliti tRPC manakah yang mencetuskan pengambilan semula pertanyaan selepas mutasi berjaya?

Ulang Kaji Pelajaran

Takrifkan pertanyaan dengan .query() dan mutasi dengan .mutation(), kedua-duanya disahkan oleh skema Zod. Pada klien, gunakan trpc.router.procedure.useQuery() dan useMutation(). Batalkan kesahan pertanyaan selepas mutasi dengan utils.procedure.invalidate(). Langganan menggunakan penjana tak segerak dan memerlukan wsLink untuk pengangkutan WebSocket.

httpBatchLink mengumpulkan pertanyaan serentak ke dalam satu permintaan HTTP secara lalai.

Percuma untuk bermula

Pelajari React dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
88
Pelajaran
324

Soalan Lazim

Adakah pelajaran “Pertanyaan, Mutasi dan Langganan” percuma?

Ya — teks penuh “Pertanyaan, Mutasi dan Langganan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pertanyaan, Mutasi dan Langganan”?

Gunakan pertanyaan dan mutasi bertip tRPC daripada komponen React dengan autolengkap penuh serta jenis ralat. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan React Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Pertanyaan, Mutasi dan Langganan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Masalah yang Diselesaikan oleh tRPC
  2. Menyediakan tRPC dengan React dan Next.js
  3. Pertanyaan, Mutasi dan Langganan
  4. Mengintegrasikan tRPC dengan React Query dan Pengesahan
← Kembali ke React Academy