React Academy · Lektion

Konfigurera Apollo Client i React

Konfigurera ApolloProvider, skapa Apollo-klienten med cache och länkekedja och anslut till ett GraphQL-API.

Lektion 2 av 413 steg

Konfigurera Apollo Client i React är en gratis lektion i React Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för React Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i React Academy innehåller totalt 4 lektioner.

Installera Apollo Client

Installera @apollo/client och graphql. Paketet graphql är ett peer-beroende som Apollo Client behöver för att tolka frågedokument med gql-template-taggen.

I TypeScript-projekt innehåller båda paketen sina egna typdefinitioner, så inga @types-paket behövs.

Skapa en ApolloClient-instans

Skapa en instans av ApolloClient med en cache och en link. Den enklaste konfigurationen är: new ApolloClient({ cache: new InMemoryCache(), uri: '/graphql' }). Kortformen uri skapar internt en HttpLink.

Om större kontroll behövs kan link-kedjan byggas manuellt och skickas till alternativet link i stället för uri.

ApolloProvider

Omslut React-applikationen med ApolloProvider och ange propen client: ApolloProvider client={client}. Då blir Apollo Client-instansen tillgänglig för alla underordnade komponenter via React context.

Alla anrop till useQuery och useMutation i komponentträdet använder automatiskt denna klient utan att props behöver skickas genom flera komponentnivåer.

InMemoryCache: normaliserad cachelagring

InMemoryCache är Apollo Clients standardcache. Hämtade data normaliseras efter typ och ID, och varje entitet lagras under en unik cache-nyckel (till exempel User:1). När en query hämtar User:1 får alla efterföljande läsningar av entiteten de uppdaterade uppgifterna.

Den här normaliseringen innebär att en uppdatering av en användare i en mutation automatiskt uppdaterar alla query-resultat som innehåller användaren, utan ytterligare kod.

HttpLink

HttpLink hanterar HTTP-transporten mellan Apollo Client och GraphQL-servern. Konfigurera den med uri och vid behov även fetch, headers och credentials.

För avancerade användningsfall kan split links dirigera olika operationer till olika endpoints: subscriptions går via WebSocket (WebSocketLink), medan queries och mutationer går via HTTP (HttpLink).

AuthLink med setContext

Importera setContext från @apollo/client/link/context. Skapa en auth-link: const authLink = setContext((_, { headers }) => ({ headers: { ...headers, authorization: 'Bearer ' + getToken() } })). Kedja den före HttpLink: authLink.concat(httpLink).

setContext-länken körs före varje förfrågan och lägger dynamiskt till autentiseringsrubriker i varje operation.

Sammansättning av link-kedjor

Sätt samman links med ApolloLink.from([authLink, errorLink, httpLink]) eller authLink.concat(httpLink). Links fungerar som middleware: varje link bearbetar operationen och skickar den vidare till next(). Den sista länken i kedjan skickar den faktiska HTTP-förfrågan.

Vanliga kedjor är auth link (lägger till rubriker) + error link (hanterar fel) + HTTP link (skickar förfrågan).

Felhantering med Apollo Link

Importera onError från @apollo/client/link/error. Fel-länken fångar upp GraphQL-fel och nätverksfel globalt. Använd den för att omdirigera till en inloggningssida vid UNAUTHENTICATED-fel eller visa ett globalt felmeddelande vid nätverksfel.

Fel-länken måste placeras före HTTP-länken i kedjan, men kan anropa forward(operation) för att försöka skicka förfrågan igen.

Alternativ för fetch policy

cache-first (default): returnera cachad data direkt och hämta om i bakgrunden om den är inaktuell. network-only: hämta alltid från servern och uppdatera cachen. cache-and-network: returnera cachen direkt OCH hämta data, och uppdatera gränssnittet när svaret kommer. cache-only: läs endast från cachen och kasta ett fel om data inte finns i cachen. no-cache: hämta alltid data och skriv aldrig till cachen.

Välj utifrån kraven på datans aktualitet: dashboards använder ofta cache-and-network, medan formulär för användarprofiler använder network-only.

Ange global standard för fetch policy

Ange standardvärdet för fetchPolicy i InMemoryCache:s defaultOptions: new ApolloClient({ defaultOptions: { watchQuery: { fetchPolicy: 'cache-and-network' } } }). Enskilda useQuery-anrop kan åsidosätta detta för respektive query.

Ett genomtänkt globalt standardvärde minskar mängden upprepande kod där fetchPolicy annars måste anges vid varje hook-anrop.

Apollo Client DevTools

Webbläsartillägget Apollo Client DevTools lägger till en Apollo-panel i Chrome DevTools. Det visar alla cachade queries och deras aktuella data, låter er utforska den normaliserade cachen och gör det möjligt att köra queries igen från DevTools-panelen.

Installera tillägget från Chrome Web Store och initiera klienten med devtools: { enabled: true } (standard i utvecklingsläge).

Sammansättning av Apollo Link-kedjan

Var ska errorLink placeras i förhållande till httpLink i Apollo Clients link-kedja?

Lektionens sammanfattning

Installera @apollo/client och graphql, skapa en ApolloClient med InMemoryCache och en link-kedja, och omslut appen med ApolloProvider. Link-kedjan sätter samman authLink (lägger till tokens), errorLink (global felhantering) och httpLink (HTTP-transport). Fetch policy styr prioriteringen mellan cache och nätverk, medan InMemoryCache normaliserar entiteter efter typ+id.

Webbläsartillägget Apollo DevTools gör det enkelt att inspektera cachen och felsöka.

Gratis att börja

Lär dig React med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
88
Lektioner
324

Vanliga frågor

Är lektionen ”Konfigurera Apollo Client i React” gratis?

Ja – hela texten till ”Konfigurera Apollo Client i React” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i React Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i React Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Konfigurera Apollo Client i React”?

Konfigurera ApolloProvider, skapa Apollo-klienten med cache och länkekedja och anslut till ett GraphQL-API. Ni övar på React Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig React Academy?

Du behöver inga förkunskaper. Utbildningen i React Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Konfigurera Apollo Client i React”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här React Academy-lektionen?

Ja. Varje React Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. GraphQL-grunder för React-utvecklare
  2. Konfigurera Apollo Client i React
  3. useQuery- och useMutation-hookar
  4. Apollo-cache: normalisering och uppdateringar
← Tillbaka till React Academy