React Academy · leksjon

Konfigurere Apollo Client i React

Konfigurer ApolloProvider, opprett Apollo-klienten med hurtigbuffer og link-kjede, og koble til et GraphQL-API.

Leksjon 2 av 413 trinn

Konfigurere Apollo Client i React er en gratis leksjon i React Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i React Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i React Academy inneholder totalt 4 leksjoner.

Installere Apollo Client

Installer @apollo/client og graphql. graphql-pakken er en peer-avhengighet som Apollo Client trenger for å tolke spørringsdokumenter med gql-maletaggen.

I TypeScript-prosjekter leveres begge pakkene med egne typedefinisjoner, så ingen @types-pakker er nødvendige.

Opprette en ApolloClient-instans

Opprett en ApolloClient-instans med en hurtigbuffer og en lenke. Det enkleste oppsettet er: new ApolloClient({ cache: new InMemoryCache(), uri: '/graphql' }). Den korte uri-syntaksen oppretter en HttpLink internt.

For større kontroll kan De bygge lenkekjeden manuelt og sende den til link-alternativet i stedet for uri.

ApolloProvider

Pakk React-applikasjonen inn i ApolloProvider med client-prop-en: ApolloProvider client={client}. Dette gjør Apollo Client-instansen tilgjengelig for alle etterfølgende komponenter via React-kontekst.

Alle useQuery- og useMutation-kall i komponenttreet bruker automatisk denne klienten uten at props må sendes gjennom mellomliggende komponenter.

InMemoryCache: normalisert hurtigbufring

InMemoryCache er standardhurtigbufferet i Apollo Client. Det normaliserer hentede data etter type og ID og lagrer hver entitet under en unik hurtigbuffernøkkel, for eksempel User:1. Når en spørring henter User:1, får alle etterfølgende lesinger av denne entiteten de oppdaterte dataene.

Denne normaliseringen innebærer at en oppdatering av en bruker i én mutasjon automatisk oppdaterer alle spørringsresultater som inneholder brukeren, uten ekstra kode.

HttpLink

HttpLink håndterer HTTP-transporten fra Apollo Client til GraphQL-serveren. Konfigurer den med uri og eventuelt fetch, headers og credentials.

Ved avanserte bruksområder kan delte lenker sende ulike operasjoner til forskjellige endepunkter: abonnementer går via WebSocket (WebSocketLink), mens spørringer og mutasjoner går via HTTP (HttpLink).

AuthLink med setContext

Importer setContext fra @apollo/client/link/context. Opprett en autentiseringslenke: const authLink = setContext((_, { headers }) => ({ headers: { ...headers, authorization: 'Bearer ' + getToken() } })). Kjed den sammen før HttpLink: authLink.concat(httpLink).

setContext-lenken kjøres før hver forespørsel og legger dynamisk til autentiseringsheadere for hver operasjon.

Sammensetting av lenkekjeder

Sett sammen lenker med ApolloLink.from([authLink, errorLink, httpLink]) eller authLink.concat(httpLink). Lenker fungerer som mellomvare: hver lenke behandler operasjonen og sender den videre til next(). Den siste lenken i kjeden sender den faktiske HTTP-forespørselen.

Vanlige kjeder er autentiseringslenke (legg til headere) + feillenke (håndter feil) + HTTP-lenke (send forespørsel).

Apollo Link-feil

Importer onError fra @apollo/client/link/error. Feillenken fanger opp GraphQL-feil og nettverksfeil globalt. Bruk den til å omdirigere til en innloggingsside ved UNAUTHENTICATED-feil, eller vise et globalt feilmeldingsvarsel ved nettverksfeil.

Feillenken må plasseres før HTTP-lenken i kjeden, men kan kalle forward(operation) for å prøve forespørselen på nytt.

Alternativer for hentepolicy

cache-first (standard): returner bufrede data umiddelbart, og hent på nytt i bakgrunnen hvis dataene er foreldede. network-only: hent alltid fra serveren og oppdater hurtigbufferet. cache-and-network: returner hurtigbufferet umiddelbart OG hent data, og oppdater brukergrensesnittet når svaret kommer. cache-only: les bare fra hurtigbufferet, og kast en feil hvis dataene ikke finnes der. no-cache: hent alltid, men skriv aldri til hurtigbufferet.

Velg basert på kravene til dataenes aktualitet: Kontrollpaneler bruker ofte cache-and-network, mens skjemaer for brukerprofiler bruker network-only.

Angi standard hentepolicy globalt

Angi standardverdien for fetchPolicy i defaultOptions for InMemoryCache: new ApolloClient({ defaultOptions: { watchQuery: { fetchPolicy: 'cache-and-network' } } }). Individuelle useQuery-kall kan overstyre dette for hver spørring.

En fornuftig global standard reduserer behovet for å angi fetchPolicy i hvert eneste hook-kall.

Apollo Client DevTools

Nettleserutvidelsen Apollo Client DevTools legger til et Apollo-panel i Chrome DevTools. Den viser alle bufrede spørringer og de aktuelle dataene, lar Dem utforske det normaliserte hurtigbufferet og gir mulighet til å kjøre spørringer på nytt fra DevTools-panelet.

Installer utvidelsen fra Chrome Nettmarked, og initialiser klienten med devtools: { enabled: true } (standard i utviklingsmodus).

Sammensetting av Apollo-lenkekjeden

Hvor skal errorLink plasseres i forhold til httpLink i Apollo Clients lenkekjede?

Leksjonsoppsummering

Installer @apollo/client og graphql, opprett en ApolloClient med InMemoryCache og en lenkekjede, og pakk appen inn i ApolloProvider. Lenkekjeden setter sammen authLink (legg til tokens), errorLink (global feilhåndtering) og httpLink (HTTP-transport). Hentepolicyen styrer prioriteringen mellom hurtigbuffer og nettverk, mens InMemoryCache normaliserer entiteter etter type og ID.

Nettleserutvidelsen Apollo DevTools gjør det enkelt å inspisere hurtigbufferet og feilsøke.

Gratis å komme i gang

Lær deg React med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
88
Leksjoner
324

Ofte stilte spørsmål

Er leksjonen «Konfigurere Apollo Client i React» gratis?

Ja – hele teksten i «Konfigurere Apollo Client i React» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av React Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i React Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Konfigurere Apollo Client i React»?

Konfigurer ApolloProvider, opprett Apollo-klienten med hurtigbuffer og link-kjede, og koble til et GraphQL-API. Du øver på React Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med React Academy?

Ingen tidligere erfaring er nødvendig. React Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Konfigurere Apollo Client i React»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne React Academy-leksjonen?

Ja. Alle React Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. GraphQL-grunnlag for React-utviklere
  2. Konfigurere Apollo Client i React
  3. useQuery- og useMutation-hooks
  4. Apollo-hurtigbuffer: normalisering og oppdateringer
← Tilbake til React Academy