0Pricing
React Academy · Lektion

Queries, Mutationen und Subscriptions

Typisierte Queries und Mutationen von React-Komponenten aus mit vollständiger Autovervollständigung und Fehlertypen verwenden

Queries, Mutationen und Subscriptions ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Eine Query-Procedure definieren

Hängen Sie .input(zodSchema).query(async ({ input, ctx }) => ...) an publicProcedure an. Der Handler erhält die validierte Eingabe und den Request-Kontext. Geben Sie einen beliebigen serialisierbaren Wert zurück: ein Objekt, ein Array oder einen primitiven Wert.

Der Rückgabetyp wird automatisch abgeleitet und zum Datentyp des zugehörigen useQuery-Hooks auf dem Client.

Eine Query aus React aufrufen

trpc.post.getById.useQuery({ id: '1' }) ruft die getById-Procedure im Post-Router auf. Der Hook gibt das vertraute React-Query-Ergebnisobjekt zurück: { data, isLoading, isError, refetch }.

Das Eingabeobjekt ist statisch typisiert: Die Übergabe von { id: 123 }, wenn das Schema einen String erwartet, führt zu einem TypeScript-Fehler, der bereits während der Entwicklung erkannt wird.

Eine Mutation-Procedure definieren

Verwenden Sie .input(zodSchema).mutation(async ({ input, ctx }) => ...) für serverseitige Schreibvorgänge: zum Erstellen, Aktualisieren oder Löschen von Daten. Mutationen werden explizit aufgerufen, statt beim Mounten ausgeführt zu werden.

Über ctx hat der Mutation-Handler Zugriff auf den vollständigen Request-Kontext, einschließlich der Sitzung aus NextAuth.

Eine Mutation aus React aufrufen

const { mutate, isLoading, error } = trpc.post.create.useMutation(). Rufen Sie mutate({ title: 'New', content: '...' }) auf, um die Mutation auszulösen. Wie React Querys useMutation wird sie nicht beim Mounten ausgeführt.

Übergeben Sie den useMutation-Optionen onSuccess- und onError-Callbacks für Seiteneffekte nach der Mutation.

Den Cache nach einer Mutation invalidieren

Um Query-Daten nach einer erfolgreichen Mutation zu aktualisieren, verwenden Sie den tRPC-Utilities-Hook: const utils = trpc.useUtils(). Rufen Sie in onSuccess utils.post.getAll.invalidate() auf, um das erneute Abrufen der Post-Liste auszulösen.

Dies entspricht in tRPC dem React-Query-Aufruf queryClient.invalidateQueries() und folgt demselben Muster aus Veraltenlassen und erneutem Abrufen.

Eingabevalidierung mit Zod

tRPC verwendet standardmäßig Zod zur Eingabevalidierung. Das Zod-Schema wird zur Laufzeit auf dem Server ausgeführt und weist fehlerhafte Eingaben zurück, bevor sie den Handler erreichen. Dasselbe Schema stellt die TypeScript-Typen für den Client bereit.

Diese doppelte Funktion (Validierung zur Laufzeit und TypeScript-Typen) beseitigt Duplikation: Sie definieren den Vertrag einmal in Zod und erhalten beide Sicherheitsgarantien ohne zusätzlichen Aufwand.

Anfragen mit httpBatchLink bündeln

Standardmäßig verwendet tRPC httpBatchLink, das mehrere gleichzeitig ausgeführte tRPC-Anfragen zu einer einzigen HTTP-Anfrage bündelt. Mehrere useQuery-Aufrufe im selben Renderzyklus einer Komponente werden gemeinsam gesendet und gemeinsam verarbeitet.

Dadurch wird der Netzwerkaufwand im Vergleich zu einzelnen HTTP-Anfragen für jede Query auf einer Seite mit mehreren Datenanforderungen deutlich reduziert.

Überblick über tRPC-Subscriptions

Definieren Sie eine Subscription-Procedure: publicProcedure.subscription(async function*() { while (true) { yield await nextEvent(); } }). Subscriptions verwenden asynchrone Generatoren und erfordern einen WebSocket-Transport.

Subscriptions eignen sich ideal für Echtzeitfunktionen: Live-Benachrichtigungen, Cursor bei der kollaborativen Bearbeitung oder gestreamte KI-Antworten.

WebSocket-Transport einrichten

Ersetzen Sie httpBatchLink durch eine Kombination aus httpBatchLink und wsLink mit splitLink: Leiten Sie Subscriptions an wsLink sowie Queries und Mutationen an httpBatchLink weiter. Erstellen Sie den WebSocket-Client mit createWSClient({ url: 'ws://localhost:3000' }).

Dieser hybride Transport bedeutet, dass die meisten Anfragen effizientes HTTP-Batching verwenden, während Subscriptions persistente WebSocket-Verbindungen nutzen.

Subscriptions aus React aufrufen

trpc.notifications.onNew.useSubscription(undefined, { onData: (notification) => addToList(notification), onError: console.error }) abonniert die Procedure. Der onData-Callback wird für jeden ausgegebenen Wert aufgerufen.

Die Subscription wird automatisch wiederhergestellt, wenn die WebSocket-Verbindung getrennt und erneut aufgebaut wird.

Queries, Mutationen und Subscriptions kombinieren

Eine Echtzeit-Listenseite könnte eine Query zum Laden der anfänglichen Liste, eine Mutation zum Hinzufügen eines Elements und eine Subscription zum Empfangen von Live-Ergänzungen anderer Benutzer verwenden. Alle drei sind gegen denselben AppRouter typisiert und lassen sich auf natürliche Weise kombinieren.

Die Strategie zur Cache-Invalidierung hängt davon ab, ob Sie einen vollständigen erneuten Abruf (nach der Mutation invalidate aufrufen) oder Cache-Aktualisierungen (utils.post.getAll.setData) bevorzugen.

tRPC-Mutation und Cache-Invalidierung

Welche tRPC-Utility-Methode löst nach dem erfolgreichen Abschluss einer Mutation das erneute Abrufen einer Query aus?

Zusammenfassung der Lektion

Definieren Sie Queries mit .query() und Mutationen mit .mutation(), die beide durch Zod-Schemas validiert werden. Verwenden Sie auf dem Client trpc.router.procedure.useQuery() und useMutation(). Invalidieren Sie Queries nach einer Mutation mit utils.procedure.invalidate(). Subscriptions verwenden asynchrone Generatoren und erfordern wsLink als WebSocket-Transport.

httpBatchLink bündelt standardmäßig gleichzeitige Queries zu einer einzigen HTTP-Anfrage.

Häufig gestellte Fragen

Ist die Lektion „Queries, Mutationen und Subscriptions“ kostenlos?

Ja — der vollständige Text von „Queries, Mutationen und Subscriptions“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Queries, Mutationen und Subscriptions“?

Typisierte Queries und Mutationen von React-Komponenten aus mit vollständiger Autovervollständigung und Fehlertypen verwenden Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Queries, Mutationen und Subscriptions“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Welches Problem tRPC löst
  2. tRPC mit React und Next.js einrichten
  3. Queries, Mutationen und Subscriptions
  4. tRPC mit React Query und Authentifizierung integrieren
← Zurück zu React Academy