0Pricing
React Academy · Lekcja

Konfiguracja React Query i QueryClient

Instalacja TanStack Query, opakowanie aplikacji w QueryClientProvider oraz wykonanie pierwszego useQuery.

Konfiguracja React Query i QueryClient to bezpłatna lekcja React Academy na CoddyKit. To lekcja 1 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 zainstalują Państwo TanStack Query, skonfigurują QueryClient i QueryClientProvider oraz po raz pierwszy użyją useQuery do pobrania danych z API.

Czym jest React Query?

TanStack Query (wcześniej React Query) zarządza stanem serwera: pobieraniem, buforowaniem, synchronizowaniem i aktualizowaniem danych ze zdalnych źródeł. Zastępuje ręczne zarządzanie stanem ładowania i błędu oraz pobieranie danych za pomocą useEffect.

Instalacja

Zainstaluj główny pakiet oraz opcjonalnie DevTools.
npm install @tanstack/react-query
npm install @tanstack/react-query-devtools --save-dev

Tworzenie QueryClient

Utwórz instancję QueryClient, która przechowuje całą konfigurację i pamięć podręczną. Przekaż ją do QueryClientProvider, który opakowuje aplikację.
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

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

Pierwsze użycie useQuery

Wywołaj useQuery z tablicą queryKey oraz funkcją queryFn, która zwraca dane. Klucz jednoznacznie identyfikuje wpis w pamięci podręcznej.
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>;
}

Klucze zapytań

Klucze zapytań są tablicami. Dodaj parametry do klucza, aby określić zakres wpisu w pamięci podręcznej. Różne klucze oznaczają różne wpisy w pamięci podręcznej.
// 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: /* ... */ })

Stan zapytania

useQuery zwraca wiele właściwości stanu: `isLoading`, `isFetching`, `isError`, `isSuccess`, `data` oraz `error`. `isFetching` ma wartość true również podczas ponownego pobierania danych w tle, natomiast `isLoading` ma wartość true tylko podczas pierwszego ładowania.

React Query DevTools

Dodaj ReactQueryDevtools do aplikacji w trybie deweloperskim, aby wyświetlać wszystkie wpisy pamięci podręcznej, ich status oraz czas ostatniego pobrania. To nieoceniona pomoc podczas debugowania.
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';

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

Konfiguracja domyślna

Skonfiguruj globalne ustawienia domyślne w QueryClient: staleTime, gcTime (czyszczenie pamięci), liczbę ponowień oraz refetchOnWindowFocus.
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,     // data is fresh for 60s
      retry: 2,              // retry failed queries twice
      refetchOnWindowFocus: false,
    },
  },
});

Automatyczne ponowne pobieranie

Domyślnie React Query ponownie pobiera nieaktualne dane, gdy: okno odzyska fokus, komponent zostanie zamontowany ponownie lub połączenie sieciowe zostanie przywrócone. Każde z tych ustawień można konfigurować niezależnie dla poszczególnych zapytań.

Szybkie sprawdzenie

Do czego służy tablica queryKey w useQuery?

Podsumowanie

Zainstaluj @tanstack/react-query, utwórz QueryClient, opakuj aplikację za pomocą QueryClientProvider i wywołaj useQuery z queryKey oraz queryFn. Dodaj DevTools, aby mieć wgląd w działanie zapytań. Skonfiguruj globalne ustawienia domyślne w QueryClient.

Następny temat

Następna lekcja: **Caching, Stale Time & Background Refetching** — skonfigurują Państwo staleTime i gcTime, aby kontrolować, kiedy dane są ponownie pobierane.

Często zadawane pytania

Czy lekcja „Konfiguracja React Query i QueryClient” jest bezpłatna?

Tak — pełny tekst „Konfiguracja React Query i QueryClient” 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 „Konfiguracja React Query i QueryClient”?

Instalacja TanStack Query, opakowanie aplikacji w QueryClientProvider oraz wykonanie pierwszego useQuery. Ć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 1 z 4.

Ile czasu zajmuje lekcja „Konfiguracja React Query i QueryClient”?

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. Konfiguracja React Query i QueryClient
  2. Buforowanie, czas nieaktualności i odświeżanie w tle
  3. Mutacje z useMutation
  4. Nieskończone przewijanie i paginacja z useInfiniteQuery
← Powrót do React Academy