Opsætning af Apollo Client i React
Konfigurér ApolloProvider, opret Apollo-klienten med cache og link-kæde, og forbind til en GraphQL-API.
Opsætning af Apollo Client i React er en gratis React Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i React Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. React Academy-kurset indeholder 4 lektioner i alt.
Installation af Apollo Client
Installér @apollo/client og graphql. graphql-pakken er en peer-afhængighed, som Apollo Client kræver for at fortolke forespørgselsdokumenter med gql-skabelontagget.
I TypeScript-projekter indeholder begge pakker deres egne typeangivelser, så der er ikke brug for @types-pakker.
Oprettelse af en ApolloClient-instans
Opret en ApolloClient-instans med en cache og et link. Den enkleste opsætning er: new ApolloClient({ cache: new InMemoryCache(), uri: '/graphql' }). Den korte uri-form opretter internt et HttpLink.
Hvis du har brug for mere kontrol, kan du opbygge link-kæden manuelt og give den videre til link-indstillingen i stedet for uri.
ApolloProvider
Indpak din React-applikation i ApolloProvider med client-proppen: ApolloProvider client={client}. Det gør Apollo Client-instansen tilgængelig for alle underordnede komponenter via React-context.
Alle kald til useQuery og useMutation i komponenttræet bruger automatisk denne klient, uden at du behøver at videresende props gennem komponenterne.
InMemoryCache: Normaliseret cachelagring
InMemoryCache er Apollo Clients standardcache. Den normaliserer hentede data efter type og id og gemmer hver entitet under en unik cache-nøgle (for eksempel User:1). Når en forespørgsel henter User:1, modtager alle efterfølgende læsninger af entiteten de opdaterede data.
Denne normalisering betyder, at en opdatering af en bruger i én mutation automatisk opdaterer alle forespørgselsresultater, der indeholder brugeren, uden ekstra kode.
HttpLink
HttpLink håndterer HTTP-transporten fra Apollo Client til din GraphQL-server. Konfigurér det med uri og eventuelt fetch, headers og credentials.
I avancerede scenarier kan opdelte links dirigere forskellige operationer til forskellige slutpunkter: abonnementer sendes via WebSocket (WebSocketLink), mens forespørgsler og mutationer sendes via HTTP (HttpLink).
AuthLink med setContext
Importér setContext fra @apollo/client/link/context. Opret et godkendelseslink: const authLink = setContext((_, { headers }) => ({ headers: { ...headers, authorization: 'Bearer ' + getToken() } })). Kæd det sammen før HttpLink: authLink.concat(httpLink).
setContext-linket køres før hver forespørgsel og tilføjer dynamisk godkendelsesheadere til hver operation.
Sammensætning af link-kæden
Sammensæt links med ApolloLink.from([authLink, errorLink, httpLink]) eller authLink.concat(httpLink). Links fungerer som mellemlag: hvert link behandler operationen og sender den videre til next(). Det sidste link i kæden sender den faktiske HTTP-forespørgsel.
Almindelige kæder er: godkendelseslink (tilføj headere) + fejllink (håndtér fejl) + HTTP-link (send forespørgsel).
Apollo Link-fejl
Importér onError fra @apollo/client/link/error. Fejllinket opfanger GraphQL-fejl og netværksfejl globalt. Brug det til at omdirigere til en login-side ved UNAUTHENTICATED-fejl eller vise en global fejlmeddelelse som en toast ved netværksfejl.
Fejllinket skal placeres før HTTP-linket i kæden, men kan kalde forward(operation) for at prøve forespørgslen igen.
Indstillinger for fetchPolicy
cache-first (standard): returnér cachelagrede data med det samme, og hent dem igen i baggrunden, hvis de er forældede. network-only: hent altid fra serveren, og opdatér cachen. cache-and-network: returnér cachen med det samme OG hent data, og opdatér brugergrænsefladen, når svaret ankommer. cache-only: læs kun fra cachen, og udløs en fejl, hvis dataene ikke er cachelagrede. no-cache: hent altid, og skriv aldrig til cachen.
Vælg ud fra kravene til dataenes aktualitet: Oversigter bruger ofte cache-and-network, mens formularer til brugerprofiler bruger network-only.
Global indstilling af standard-fetchPolicy
Indstil standardværdien for fetchPolicy i InMemoryCache's defaultOptions: new ApolloClient({ defaultOptions: { watchQuery: { fetchPolicy: 'cache-and-network' } } }). Individuelle useQuery-kald kan tilsidesætte denne værdi for den enkelte forespørgsel.
En fornuftig global standard reducerer mængden af standardkode, fordi du ikke behøver at angive fetchPolicy ved hvert hook-kald.
Apollo Client DevTools
Browserudvidelsen Apollo Client DevTools tilføjer et Apollo-panel til Chrome DevTools. Den viser alle cachelagrede forespørgsler og deres aktuelle data, lader dig udforske den normaliserede cache og giver dig mulighed for at køre forespørgsler igen fra DevTools-panelet.
Installér udvidelsen fra Chrome Web Store, og initialisér klienten med devtools: { enabled: true } (standard i udviklingstilstand).
Sammensætning af Apollo Link-kæden
I Apollo Clients link-kæde, hvor skal errorLink placeres i forhold til httpLink?
Opsummering af lektionen
Installér @apollo/client og graphql, opret en ApolloClient med InMemoryCache og en link-kæde, og indpak appen i ApolloProvider. Link-kæden sammensætter authLink (tilføj tokens), errorLink (global fejlhåndtering) og httpLink (HTTP-transport). Hentepolitikken styrer prioriteringen mellem cache og netværk, mens InMemoryCache normaliserer entiteter efter type og id.
Browserudvidelsen Apollo DevTools gør det enkelt at inspicere cachen og foretage fejlfinding.
Lær React med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 88
- Lektioner
- 324
Ofte stillede spørgsmål
Er lektionen “Opsætning af Apollo Client i React” gratis?
Ja — hele teksten til “Opsætning af Apollo Client i React” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af React Academy-kurset, skal du opgradere til CoddyKit PRO. React Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Opsætning af Apollo Client i React”?
Konfigurér ApolloProvider, opret Apollo-klienten med cache og link-kæde, og forbind til en GraphQL-API. Du øver dig i React Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på React Academy?
Der kræves ingen tidligere erfaring. React Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Opsætning af Apollo Client i React”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne React Academy-lektion?
Ja. Alle React Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- GraphQL-grundlag for React-udviklere
- Opsætning af Apollo Client i React
- useQuery- og useMutation-hooks
- Apollo-cache: Normalisering og opdateringer