0Pricing
React Academy · Lezione

Configurazione di React Query e QueryClient

Installi TanStack Query, racchiuda l'app in QueryClientProvider ed esegua la prima useQuery.

Configurazione di React Query e QueryClient è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Benvenuto

In questa lezione installerà TanStack Query, configurerà QueryClient e QueryClientProvider ed eseguirà il primo useQuery per recuperare dati da un'API.

Che cos'è React Query?

TanStack Query, precedentemente React Query, gestisce lo stato del server: recupera, memorizza nella cache, sincronizza e aggiorna i dati provenienti da fonti remote. Sostituisce la gestione manuale degli stati di caricamento ed errore e il recupero dei dati basato su useEffect.

Installazione

Installi il pacchetto principale e, facoltativamente, i DevTools.
npm install @tanstack/react-query
npm install @tanstack/react-query-devtools --save-dev

Creare un QueryClient

Crei un'istanza di QueryClient per contenere tutta la configurazione e la cache. La passi a QueryClientProvider, che avvolge l'applicazione.
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

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

Il primo useQuery

Chiami useQuery con un array queryKey e una queryFn che restituisce i dati. La chiave identifica in modo univoco la voce nella cache.
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

Le query key sono array. Aggiunga i parametri alla chiave per definire l'ambito della voce nella cache. Chiavi diverse corrispondono a voci diverse nella cache.
// 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: /* ... */ })

Stato della query

useQuery restituisce diverse proprietà di stato: `isLoading`, `isFetching`, `isError`, `isSuccess`, `data` ed `error`. `isFetching` è true anche durante i refetch in background; `isLoading` è true solo durante il primo caricamento.

React Query DevTools

Aggiunga ReactQueryDevtools all'applicazione in fase di sviluppo per visualizzare tutte le voci della cache, il relativo stato e l'ultima volta in cui sono stati recuperati i dati. È uno strumento prezioso per il debugging.
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';

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

Configurazione predefinita

Configuri i valori predefiniti globali su QueryClient: staleTime, gcTime, ovvero la garbage collection, il numero di tentativi e refetchOnWindowFocus.
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,     // data is fresh for 60s
      retry: 2,              // retry failed queries twice
      refetchOnWindowFocus: false,
    },
  },
});

Refetch automatico

Per impostazione predefinita, React Query esegue il refetch dei dati obsoleti quando la finestra torna attiva, quando il componente viene montato nuovamente e quando la rete si riconnette. Questi comportamenti possono essere configurati singolarmente per ogni query.

Verifica rapida

Qual è lo scopo dell'array queryKey in useQuery?

Riepilogo

Installi @tanstack/react-query, crei QueryClient, avvolga l'applicazione con QueryClientProvider e chiami useQuery con una queryKey e una queryFn. Aggiunga i DevTools per avere visibilità sulla cache. Configuri i valori predefiniti globali su QueryClient.

Prossimo argomento

Prossima lezione: **Caching, Stale Time & Background Refetching** — configurerà staleTime e gcTime per controllare quando vengono recuperati nuovamente i dati.

Domande Frequenti

La lezione «Configurazione di React Query e QueryClient» è gratuita?

Sì — il testo completo di «Configurazione di React Query e QueryClient» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Configurazione di React Query e QueryClient»?

Installi TanStack Query, racchiuda l'app in QueryClientProvider ed esegua la prima useQuery. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Configurazione di React Query e QueryClient»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Configurazione di React Query e QueryClient
  2. Caching, stale time e refetch in background
  3. Mutation con useMutation
  4. Scroll infinito e paginazione con useInfiniteQuery
← Torna a React Academy