React Academy · Lektion

RTK Query: Endpoints og automatisk caching

Definér query- og mutation-endpoints med createApi, og lad RTK Query håndtere caching.

Lektion 3 af 413 trin

RTK Query: Endpoints og automatisk caching er en gratis React Academy-lektion på CoddyKit. Dette er lektion 3 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 lærer du at definere query- og mutation-endpoints med RTK Querys createApi og lade det håndtere cachelagring, indlæsningstilstande og datahentning automatisk.

Hvad er RTK Query?

RTK Query er et lag til datahentning og cachelagring, som er indbygget i Redux Toolkit. Det fjerner behovet for manuel håndtering af indlæsnings- og fejltilstande, fjerner dubletter i forespørgsler og cacher svar efter endpoint og argument.

Oprettelse af et API med createApi

Kald createApi() med reducerPath, baseQuery og endpoints. Resultatet indeholder genererede React-hooks.
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

export const userApi = createApi({
  reducerPath: 'userApi',
  baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
  endpoints: (builder) => ({
    getUser: builder.query({ query: (id) => '/users/' + id }),
    getUsers: builder.query({ query: () => '/users' }),
  }),
});

export const { useGetUserQuery, useGetUsersQuery } = userApi;

Tilføjelse af API'et til storet

Tilføj den genererede reducerfunktion og middleware til configureStore. Middleware håndterer cachelagringens livscyklus, invalidering og genhentning.
import { configureStore } from '@reduxjs/toolkit';
import { userApi } from './userApi';

export const store = configureStore({
  reducer: { [userApi.reducerPath]: userApi.reducer },
  middleware: (gDM) => gDM().concat(userApi.middleware),
});

Brug af en query-hook

Kald den genererede hook i en komponent. Den returnerer data, isLoading, isError og refetch. Data cachelagres efter argument — den samme hook med det samme argument returnerer cachelagrede data med det samme.
function UserCard({ id }) {
  const { data, isLoading, isError } = useGetUserQuery(id);
  if (isLoading) return <Spinner />;
  if (isError) return <p>Error</p>;
  return <p>{data.name}</p>;
}

Automatisk deduplikering

Hvis to komponenter monteres samtidigt og kalder useGetUsersQuery(), sender RTK Query kun én netværksforespørgsel og deler svaret mellem begge komponenter.

Cachelevetid med keepUnusedDataFor

Styr, hvor længe cachelagrede data bliver i storet, efter at alle abonnenter afmonteres. Standardværdien er 60 sekunder. Indstil den pr. endpoint.
endpoints: (builder) => ({
  getUser: builder.query({
    query: id => '/users/' + id,
    keepUnusedDataFor: 300, // 5 minutes
  }),
})

Polling efter live-data

Giv `pollingInterval` til hook-kaldet for automatisk at hente data igen hvert N. millisekund. Det er nyttigt til dashboards og live-feeds.
const { data } = useGetStatsQuery(undefined, {
  pollingInterval: 5000, // refetch every 5 seconds
});

Query-argumenter og spring over

Send undefined, eller brug indstillingen `skip` til betinget at springe en forespørgsel over. Det er nyttigt, når påkrævede ID'er endnu ikke er tilgængelige.
const { data } = useGetUserQuery(userId, { skip: !userId });

Omdannelse af svar

Brug `transformResponse` til at omforme API-svaret, før det cachelagres. Det holder komponenterne rene — de modtager en behandlet datastruktur i stedet for det rå API-format.
getUsers: builder.query({
  query: () => '/users',
  transformResponse: (raw) => raw.data.users,
})

Hurtigt tjek

Hvad sker der, hvis to komponenter kalder den samme RTK Query-hook med det samme argument på samme tid?

Opsummering

createApi definerer endpoints og genererer typede hooks. Tilføj reducerfunktionen og middleware til storet. Query-hooks returnerer data, isLoading og isError. Svar cachelagres og deduplikeres automatisk.

Næste trin

Næste lektion: **Optimistiske opdateringer og cache-invalidering** — du vil opdatere brugergrænsefladen med det samme ved en mutation og ugyldiggøre cachelagrede data med tags.
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 “RTK Query: Endpoints og automatisk caching” gratis?

Ja — hele teksten til “RTK Query: Endpoints og automatisk caching” 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 “RTK Query: Endpoints og automatisk caching”?

Definér query- og mutation-endpoints med createApi, og lad RTK Query håndtere caching. 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 3 af 4.

Hvor lang tid tager lektionen “RTK Query: Endpoints og automatisk caching”?

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. Redux Toolkit-slices og createSlice
  2. Asynkron logik med createAsyncThunk
  3. RTK Query: Endpoints og automatisk caching
  4. Optimistiske opdateringer og ugyldiggørelse af cache
← Tilbage til React Academy