Pertanyaan, Mutasi dan Langganan
Gunakan pertanyaan dan mutasi bertip tRPC daripada komponen React dengan autolengkap penuh serta jenis ralat.
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.
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
- Masalah yang Diselesaikan oleh tRPC
- Menyediakan tRPC dengan React dan Next.js
- Pertanyaan, Mutasi dan Langganan
- Mengintegrasikan tRPC dengan React Query dan Pengesahan