0Pricing
React Academy · Lezione

RTK Query: endpoint e caching automatico

Definisca endpoint di query e mutation con createApi e lasci che RTK Query gestisca il caching.

RTK Query: endpoint e caching automatico è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 3 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 definirà endpoint di query e mutation con createApi di RTK Query e lascerà che gestisca automaticamente il caching, gli stati di caricamento e il recupero dei dati.

Che cos'è RTK Query?

RTK Query è un livello per il recupero e il caching dei dati integrato in Redux Toolkit. Elimina la gestione manuale dello stato di caricamento e degli errori, evita la duplicazione delle richieste e memorizza nella cache le risposte in base all'endpoint e all'argomento.

Creazione di un'API con createApi

Chiami createApi() con un reducerPath, un baseQuery e gli endpoints. Il risultato include hook React generati automaticamente.
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;

Aggiunta dell'API allo store

Aggiunga il reducer e il middleware generati a configureStore. Il middleware gestisce il ciclo di vita della cache, l'invalidazione e il recupero dei dati.
import { configureStore } from '@reduxjs/toolkit';
import { userApi } from './userApi';

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

Utilizzo di un hook di query

Chiami l'hook generato in un componente. Restituisce data, isLoading, isError e refetch. I dati vengono memorizzati nella cache in base all'argomento: lo stesso hook con lo stesso argomento restituisce immediatamente i dati memorizzati.
function UserCard({ id }) {
  const { data, isLoading, isError } = useGetUserQuery(id);
  if (isLoading) return <Spinner />;
  if (isError) return <p>Error</p>;
  return <p>{data.name}</p>;
}

Deduplicazione automatica

Se due componenti vengono montati contemporaneamente e chiamano useGetUsersQuery(), RTK Query invia una sola richiesta di rete e condivide la risposta tra entrambi i componenti.

TTL della cache con keepUnusedDataFor

Controlli per quanto tempo i dati memorizzati nella cache rimangono nello store dopo che tutti i sottoscrittori vengono smontati. Il valore predefinito è 60 secondi. Lo imposti per ogni endpoint.
endpoints: (builder) => ({
  getUser: builder.query({
    query: id => '/users/' + id,
    keepUnusedDataFor: 300, // 5 minutes
  }),
})

Polling dei dati in tempo reale

Passi `pollingInterval` alla chiamata dell'hook per eseguire automaticamente una nuova richiesta ogni N millisecondi. È utile per dashboard e feed in tempo reale.
const { data } = useGetStatsQuery(undefined, {
  pollingInterval: 5000, // refetch every 5 seconds
});

Argomenti delle query e salto

Passi undefined oppure utilizzi l'opzione `skip` per saltare condizionalmente una query. È utile quando gli ID necessari non sono ancora disponibili.
const { data } = useGetUserQuery(userId, { skip: !userId });

Trasformazione delle risposte

Utilizzi `transformResponse` per ristrutturare la risposta dell'API prima di memorizzarla nella cache. In questo modo i componenti rimangono semplici: ricevono una struttura elaborata, non il formato grezzo dell'API.
getUsers: builder.query({
  query: () => '/users',
  transformResponse: (raw) => raw.data.users,
})

Verifica rapida

Che cosa succede se due componenti chiamano contemporaneamente lo stesso hook di RTK Query con lo stesso argomento?

Riepilogo

createApi definisce gli endpoint e genera hook tipizzati. Aggiunga il reducer e il middleware allo store. Gli hook di query restituiscono data, isLoading e isError. Le risposte vengono memorizzate nella cache e deduplicate automaticamente.

Prossimo argomento

Prossima lezione: **Aggiornamenti ottimistici e invalidazione della cache** — aggiornerà immediatamente l'interfaccia durante una mutation e invaliderà i dati memorizzati nella cache utilizzando i tag.

Domande Frequenti

La lezione «RTK Query: endpoint e caching automatico» è gratuita?

Sì — il testo completo di «RTK Query: endpoint e caching automatico» è 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 «RTK Query: endpoint e caching automatico»?

Definisca endpoint di query e mutation con createApi e lasci che RTK Query gestisca il caching. 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 3 di 4.

Quanto tempo richiede la lezione «RTK Query: endpoint e caching automatico»?

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. Slice di Redux Toolkit e createSlice
  2. Logica asincrona con createAsyncThunk
  3. RTK Query: endpoint e caching automatico
  4. Aggiornamenti ottimistici e invalidazione della cache
← Torna a React Academy