React Academy · Lektion

Opsætning af React Query og QueryClient

Installér TanStack Query, pak din app ind i QueryClientProvider, og kør din første useQuery.

Lektion 1 af 413 trin

Opsætning af React Query og QueryClient er en gratis React Academy-lektion på CoddyKit. Dette er lektion 1 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.

Velkommen

I denne lektion installerer du TanStack Query, konfigurerer QueryClient og QueryClientProvider og kører din første useQuery for at hente data fra en API.

Hvad er React Query?

TanStack Query (tidligere React Query) håndterer tilstand på serveren: hentning, caching, synkronisering og opdatering af data fra eksterne kilder. Det erstatter manuel indlæsnings- og fejltilstand samt datahentning baseret på useEffect.

Installation

Installér kernepakken og eventuelt DevTools.
npm install @tanstack/react-query
npm install @tanstack/react-query-devtools --save-dev

Oprettelse af en QueryClient

Opret en QueryClient-instans til alle cachedata og al konfiguration. Send den til QueryClientProvider, som omslutter 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ørste useQuery

Kald useQuery med et queryKey-array og en queryFn, der returnerer dataene. Nøglen identificerer entydigt den cachelagrede post.
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-nøgler

Query-nøgler er arrays. Føj parametre til nøglen for at afgrænse cacheposten. Forskellige nøgler giver forskellige 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 returnerer flere statusfelter: `isLoading`, `isFetching`, `isError`, `isSuccess`, `data` og `error`. `isFetching` er sand, også ved genhentning i baggrunden; `isLoading` er kun sand ved den første indlæsning.

React Query DevTools

Tilføj ReactQueryDevtools til din app under udvikling for at se alle cacheposter, deres status og hvornår de sidst blev hentet. Det er uvurderligt ved fejlfinding.
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';

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

Standardkonfiguration

Konfigurér globale standarder på QueryClient: staleTime, gcTime (affaldsindsamling), antal forsøg og refetchOnWindowFocus.
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,     // data is fresh for 60s
      retry: 2,              // retry failed queries twice
      refetchOnWindowFocus: false,
    },
  },
});

Automatisk genhentning

Som standard henter React Query forældede data igen, når vinduet igen får fokus, komponenten monteres igen, og netværksforbindelsen genoprettes. Du kan konfigurere disse indstillinger individuelt for hver forespørgsel.

Hurtigt tjek

Hvad er formålet med queryKey-arrayet i useQuery?

Opsummering

Installér @tanstack/react-query, opret QueryClient, omslut din app med QueryClientProvider, og kald useQuery med en queryKey og en queryFn. Tilføj DevTools for at få indblik. Konfigurér globale standarder på QueryClient.

Næste trin

Næste lektion: **Caching, forældelsestid og genhentning i baggrunden** — du konfigurerer staleTime og gcTime for at styre, hvornår data hentes igen.
Gratis at komme i gang

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 React Query og QueryClient” gratis?

Ja — hele teksten til “Opsætning af React Query og QueryClient” 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 React Query og QueryClient”?

Installér TanStack Query, pak din app ind i QueryClientProvider, og kør din første useQuery. 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 1 af 4.

Hvor lang tid tager lektionen “Opsætning af React Query og QueryClient”?

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

  1. Opsætning af React Query og QueryClient
  2. Caching, stale time og genhentning i baggrunden
  3. Mutationer med useMutation
  4. Uendelig scroll og paginering med useInfiniteQuery
← Tilbage til React Academy