React Academy · Lektion

Konfigurera React Query och QueryClient

Installera TanStack Query, omslut appen med QueryClientProvider och kör din första useQuery.

Lektion 1 av 413 steg

Konfigurera React Query och QueryClient är en gratis lektion i React Academy på CoddyKit. Detta är lektion 1 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.

Välkommen

I den här lektionen kommer du att installera TanStack Query, konfigurera QueryClient och QueryClientProvider samt köra din första useQuery för att hämta data från ett API.

Vad är React Query?

TanStack Query (tidigare React Query) hanterar server state: hämtning, cachning, synkronisering och uppdatering av data från externa källor. Det ersätter manuell hantering av laddnings- och feltillstånd samt datahämtning baserad på useEffect.

Installation

Installera kärnpaketet och eventuellt DevTools.
npm install @tanstack/react-query
npm install @tanstack/react-query-devtools --save-dev

Skapa en QueryClient

Skapa en instans av QueryClient som innehåller all cachning och konfiguration. Skicka den till QueryClientProvider, som omsluter din app.
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

createRoot(document.getElementById('root')).render(
  <QueryClientProvider client={queryClient}>
    <App />
  </QueryClientProvider>
);

Din första useQuery

Anropa useQuery med en queryKey-array och en queryFn som returnerar data. Nyckeln identifierar den cachade posten unikt.
import { useQuery } from '@tanstack/react-query';

function Posts() {
  const { data, isLoading, isError } = useQuery({
    queryKey: ['posts'],
    queryFn: () => fetch('/api/posts').then(r => r.json()),
  });

  if (isLoading) return <p>Loading...</p>;
  if (isError) return <p>Error!</p>;
  return <ul>{data.map(p => <li key={p.id}>{p.title}</li>)}</ul>;
}

Query Keys

Query keys är arrayer. Lägg till parametrar i nyckeln för att avgränsa cacheposten. Olika nycklar innebär olika cacheposter.
// All posts
useQuery({ queryKey: ['posts'], queryFn: fetchPosts })

// Post with id 5
useQuery({ queryKey: ['posts', 5], queryFn: () => fetchPost(5) })

// Posts filtered by category
useQuery({ queryKey: ['posts', { category: 'react' }], queryFn: /* ... */ })

Query-status

useQuery returnerar flera status-egenskaper: `isLoading`, `isFetching`, `isError`, `isSuccess`, `data` och `error`. `isFetching` är true även vid hämtning i bakgrunden, medan `isLoading` endast är true under den första laddningen.

React Query DevTools

Lägg till ReactQueryDevtools i din app under utveckling för att se alla cacheposter, deras status och när de senast hämtades. Det är ovärderligt vid felsökning.
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';

<QueryClientProvider client={queryClient}>
  <App />
  <ReactQueryDevtools initialIsOpen={false} />
</QueryClientProvider>

Standardkonfiguration

Konfigurera globala standardvärden på QueryClient: staleTime, gcTime (garbage collection), antal försök och refetchOnWindowFocus.
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,     // data is fresh for 60s
      retry: 2,              // retry failed queries twice
      refetchOnWindowFocus: false,
    },
  },
});

Automatisk hämtning på nytt

Som standard hämtar React Query inaktuella data på nytt när fönstret återfår fokus, komponenten monteras igen och nätverksanslutningen återupprättas. Dessa inställningar kan konfigureras individuellt för varje fråga.

Snabb kontroll

Vad är syftet med queryKey-arrayen i useQuery?

Sammanfattning

Installera @tanstack/react-query, skapa QueryClient, omslut appen med QueryClientProvider och anropa useQuery med en queryKey och en queryFn. Lägg till DevTools för insyn. Konfigurera globala standardvärden på QueryClient.

Härnäst

Nästa lektion: **Cachning, staleTime och hämtning i bakgrunden** — du kommer att konfigurera staleTime och gcTime för att styra när data hämtas på nytt.
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 React Query och QueryClient” gratis?

Ja – hela texten till ”Konfigurera React Query och QueryClient” 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 React Query och QueryClient”?

Installera TanStack Query, omslut appen med QueryClientProvider och kör din första useQuery. 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 1 av 4.

Hur lång tid tar lektionen ”Konfigurera React Query och QueryClient”?

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. Konfigurera React Query och QueryClient
  2. Cachning, stale time och bakgrundshämtning
  3. Mutationer med useMutation
  4. Oändlig scrollning och paginering med useInfiniteQuery
← Tillbaka till React Academy