0Pricing
React Academy · Lekcja

RTK Query: endpointy i automatyczne buforowanie

Definiowanie endpointów zapytań i mutacji za pomocą createApi oraz przekazywanie zarządzania buforowaniem do RTK Query.

RTK Query: endpointy i automatyczne buforowanie to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Wprowadzenie

W tej lekcji nauczysz się definiować endpointy zapytań i mutacji za pomocą createApi z RTK Query oraz pozwalać mu automatycznie zarządzać cache’em, stanami ładowania i pobieraniem danych.

Czym jest RTK Query?

RTK Query to wbudowana w Redux Toolkit warstwa pobierania danych i zarządzania cache’em. Eliminuje konieczność ręcznego zarządzania stanami ładowania i błędów, usuwa duplikaty zapytań oraz buforuje odpowiedzi według endpointu i argumentu.

Tworzenie API za pomocą createApi

Wywołaj createApi(), przekazując reducerPath, baseQuery i endpoints. Wynik zawiera wygenerowane hooki Reacta.
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;

Dodawanie API do store

Dodaj wygenerowany reducer i middleware do configureStore. Middleware obsługuje cykl życia cache’a, unieważnianie i ponowne pobieranie danych.
import { configureStore } from '@reduxjs/toolkit';
import { userApi } from './userApi';

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

Używanie hooka zapytania

Wywołaj wygenerowany hook w komponencie. Zwraca on data, isLoading, isError i refetch. Dane są buforowane według argumentu — ten sam hook z tym samym argumentem natychmiast zwraca dane z cache’a.
function UserCard({ id }) {
  const { data, isLoading, isError } = useGetUserQuery(id);
  if (isLoading) return <Spinner />;
  if (isError) return <p>Error</p>;
  return <p>{data.name}</p>;
}

Automatyczne usuwanie duplikatów

Jeśli dwa komponenty zostaną zamontowane jednocześnie i wywołają useGetUsersQuery(), RTK Query wyśle tylko jedno żądanie sieciowe i udostępni odpowiedź obu komponentom.

TTL cache’a z keepUnusedDataFor

Określ, jak długo dane w cache pozostają w store po odmontowaniu wszystkich subskrybentów. Domyślnie jest to 60 sekund. Ustaw tę wartość dla każdego endpointu.
endpoints: (builder) => ({
  getUser: builder.query({
    query: id => '/users/' + id,
    keepUnusedDataFor: 300, // 5 minutes
  }),
})

Odpytywanie w celu uzyskania aktualnych danych

Przekaż `pollingInterval` podczas wywołania hooka, aby automatycznie ponownie pobierać dane co N milisekund. Jest to przydatne w dashboardach i kanałach z aktualizacjami na żywo.
const { data } = useGetStatsQuery(undefined, {
  pollingInterval: 5000, // refetch every 5 seconds
});

Argumenty zapytania i pomijanie

Przekaż undefined lub użyj opcji `skip`, aby warunkowo pominąć zapytanie. Jest to przydatne, gdy wymagane identyfikatory nie są jeszcze dostępne.
const { data } = useGetUserQuery(userId, { skip: !userId });

Przekształcanie odpowiedzi

Użyj `transformResponse`, aby zmienić strukturę odpowiedzi API przed zapisaniem jej w cache’u. Dzięki temu komponenty pozostają przejrzyste — otrzymują przetworzoną strukturę, a nie surowy format API.
getUsers: builder.query({
  query: () => '/users',
  transformResponse: (raw) => raw.data.users,
})

Szybkie sprawdzenie

Co się stanie, jeśli dwa komponenty jednocześnie wywołają ten sam hook RTK Query z tym samym argumentem?

Podsumowanie

createApi definiuje endpointy i generuje typowane hooki. Dodaj reducer i middleware do store. Hooki zapytań zwracają data, isLoading i isError. Odpowiedzi są automatycznie buforowane i pozbawiane duplikatów.

Następna lekcja

Następna lekcja: **Optymistyczne aktualizacje i unieważnianie cache’a** — nauczysz się natychmiast aktualizować interfejs po mutacji i unieważniać dane w cache za pomocą tagów.

Często zadawane pytania

Czy lekcja „RTK Query: endpointy i automatyczne buforowanie” jest bezpłatna?

Tak — pełny tekst „RTK Query: endpointy i automatyczne buforowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „RTK Query: endpointy i automatyczne buforowanie”?

Definiowanie endpointów zapytań i mutacji za pomocą createApi oraz przekazywanie zarządzania buforowaniem do RTK Query. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „RTK Query: endpointy i automatyczne buforowanie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Slice'y Redux Toolkit i createSlice
  2. Logika asynchroniczna z createAsyncThunk
  3. RTK Query: endpointy i automatyczne buforowanie
  4. Optymistyczne aktualizacje i unieważnianie cache
← Powrót do React Academy