Apollo Client in React einrichten
ApolloProvider konfigurieren, den Apollo-Client mit Cache und Link-Kette erstellen und eine Verbindung zu einer GraphQL-API herstellen
Apollo Client in React einrichten ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Apollo Client installieren
Installieren Sie @apollo/client und graphql. Das graphql-Paket ist eine Peer-Abhängigkeit, die Apollo Client zum Parsen von Abfragedokumenten mit dem gql-Template-Tag benötigt.
Für TypeScript-Projekte liefern beide Pakete ihre Typdefinitionen selbst mit, daher sind keine @types-Pakete erforderlich.
Die ApolloClient-Instanz erstellen
Erzeugen Sie eine ApolloClient-Instanz mit einem Cache und einem Link. Die einfachste Einrichtung: new ApolloClient({ cache: new InMemoryCache(), uri: '/graphql' }). Die uri-Kurzform erstellt intern einen HttpLink.
Für mehr Kontrolle erstellen Sie die Link-Kette manuell und übergeben sie anstelle von uri an die link-Option.
ApolloProvider
Umschließen Sie Ihre React-Anwendung mit ApolloProvider und der client-Prop: ApolloProvider client={client}. Dadurch steht die Apollo-Client-Instanz allen untergeordneten Komponenten über den React-Kontext zur Verfügung.
Jeder useQuery- und useMutation-Aufruf im Komponentenbaum verwendet automatisch diesen Client, ohne dass Props schrittweise weitergereicht werden müssen.
InMemoryCache: Normalisiertes Caching
InMemoryCache ist der Standardcache von Apollo Client. Abgerufene Daten werden nach Typ und ID normalisiert, wobei jede Entität unter einem eindeutigen Cache-Schlüssel gespeichert wird (z. B. User:1). Wenn eine Query User:1 abruft, erhalten alle nachfolgenden Lesevorgänge dieser Entität die aktualisierten Daten.
Dank dieser Normalisierung aktualisiert das Ändern eines Benutzers in einer Mutation automatisch jedes Query-Ergebnis, das diesen Benutzer enthält, ohne zusätzlichen Code.
HttpLink
HttpLink übernimmt den HTTP-Transport von Apollo Client zu Ihrem GraphQL-Server. Konfigurieren Sie ihn mit uri und optional mit fetch, headers und credentials.
Für fortgeschrittene Anwendungsfälle leiten Split-Links verschiedene Operationen an verschiedene Endpunkte weiter: Subscriptions werden über WebSocket (WebSocketLink) übertragen, Queries und Mutationen über HTTP (HttpLink).
AuthLink mit setContext
Importieren Sie setContext aus @apollo/client/link/context. Erstellen Sie einen Auth-Link: const authLink = setContext((_, { headers }) => ({ headers: { ...headers, authorization: 'Bearer ' + getToken() } })). Verketten Sie ihn vor HttpLink: authLink.concat(httpLink).
Der setContext-Link wird vor jeder Anfrage ausgeführt und fügt dynamisch jeder Operation Authentifizierungs-Header hinzu.
Zusammensetzen einer Link-Kette
Setzen Sie Links mit ApolloLink.from([authLink, errorLink, httpLink]) oder authLink.concat(httpLink) zusammen. Links sind Middleware: Jeder Link verarbeitet die Operation und übergibt sie an next(). Der letzte Link in der Kette sendet die eigentliche HTTP-Anfrage.
Übliche Ketten: Auth-Link (Header hinzufügen) + Error-Link (Fehler behandeln) + HTTP-Link (Anfrage senden).
Apollo-Link-Fehler
Importieren Sie onError aus @apollo/client/link/error. Der Error-Link fängt GraphQL-Fehler und Netzwerkfehler global ab. Verwenden Sie ihn, um bei UNAUTHENTICATED-Fehlern auf eine Anmeldeseite weiterzuleiten oder bei Netzwerkausfällen einen globalen Fehler-Toast anzuzeigen.
Der Error-Link muss in der Kette vor dem HTTP-Link stehen, kann aber forward(operation) aufrufen, um die Anfrage zu wiederholen.
Optionen für Fetch Policies
cache-first (Standard): Daten sofort aus dem Cache zurückgeben; bei veralteten Daten im Hintergrund neu abrufen. network-only: immer vom Server abrufen und den Cache aktualisieren. cache-and-network: Daten sofort aus dem Cache zurückgeben UND abrufen; die Benutzeroberfläche aktualisieren, sobald die Antwort eintrifft. cache-only: nur aus dem Cache lesen und einen Fehler auslösen, wenn die Daten nicht gecacht sind. no-cache: immer abrufen und niemals in den Cache schreiben.
Wählen Sie anhand der erforderlichen Datenaktualität: Dashboards verwenden häufig cache-and-network, Benutzerprofilformulare network-only.
Standard-Fetch-Policy global festlegen
Legen Sie die Standard-Fetch-Policy in den defaultOptions des InMemoryCache fest: new ApolloClient({ defaultOptions: { watchQuery: { fetchPolicy: 'cache-and-network' } } }). Einzelne useQuery-Aufrufe können diese pro Query überschreiben.
Ein sinnvoller globaler Standard reduziert den wiederholten Code, der fetchPolicy bei jedem Hook-Aufruf anzugeben.
Apollo Client DevTools
Die Apollo-Client-DevTools-Browsererweiterung fügt den Chrome DevTools ein Apollo-Panel hinzu. Sie zeigt alle gecachten Queries und deren aktuelle Daten, ermöglicht das Erkunden des normalisierten Caches und erlaubt das erneute Ausführen von Queries über das DevTools-Panel.
Installieren Sie die Erweiterung aus dem Chrome Web Store und initialisieren Sie den Client mit devtools: { enabled: true } (im Entwicklungsmodus standardmäßig aktiviert).
Zusammensetzung der Apollo-Link-Kette
Wo sollte errorLink im Verhältnis zu httpLink platziert werden?
Zusammenfassung der Lektion
Installieren Sie @apollo/client und graphql, erstellen Sie einen ApolloClient mit InMemoryCache und einer Link-Kette und umschließen Sie die Anwendung mit ApolloProvider. Die Link-Kette kombiniert authLink (Tokens hinzufügen), errorLink (globale Fehlerbehandlung) und httpLink (HTTP-Transport). Die Fetch-Policy steuert die Priorität von Cache und Netzwerk; InMemoryCache normalisiert Entitäten nach Typ und ID.
Die Apollo-DevTools-Browsererweiterung macht das Untersuchen des Caches und das Debugging unkompliziert.
Häufig gestellte Fragen
Ist die Lektion „Apollo Client in React einrichten“ kostenlos?
Ja — der vollständige Text von „Apollo Client in React einrichten“ 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 „Apollo Client in React einrichten“?
ApolloProvider konfigurieren, den Apollo-Client mit Cache und Link-Kette erstellen und eine Verbindung zu einer GraphQL-API herstellen 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 2 von 4.
Wie lange dauert die Lektion „Apollo Client in React einrichten“?
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
- GraphQL-Grundlagen für React-Entwickler
- Apollo Client in React einrichten
- useQuery- und useMutation-Hooks
- Apollo-Cache: Normalisierung und Aktualisierungen