Mutation con useMutation
Invii dati alle API con useMutation, gestisca gli stati di caricamento ed errore e invalidi le query in caso di successo.
Mutation con useMutation è 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
Nozioni di base su useMutation
import { useMutation } from '@tanstack/react-query';
const { mutate, isLoading, isError } = useMutation({
mutationFn: (newPost) => fetch('/api/posts', {
method: 'POST',
body: JSON.stringify(newPost),
}).then(r => r.json()),
});Chiamare mutate
<button onClick={() => mutate({ title: 'New Post' })}>
Create Post
</button>Callback: onSuccess, onError, onSettled
useMutation({
mutationFn: createPost,
onSuccess: (data) => {
console.log('Created:', data);
navigate('/posts/' + data.id);
},
onError: (error) => {
toast.error(error.message);
},
})Invalidare le query dopo una mutazione
import { useQueryClient } from '@tanstack/react-query';
const queryClient = useQueryClient();
const { mutate } = useMutation({
mutationFn: createPost,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['posts'] });
},
});mutateAsync per la sintassi await
const { mutateAsync } = useMutation({ mutationFn: createPost });
async function handleSubmit() {
try {
const post = await mutateAsync({ title: 'Draft' });
navigate('/posts/' + post.id);
} catch (err) {
setError(err.message);
}
}Disabilitare l'invio durante una mutazione
const { mutate, isPending } = useMutation({ mutationFn: saveItem });
<button onClick={() => mutate(item)} disabled={isPending}>
{isPending ? 'Saving...' : 'Save'}
</button>Aggiornamenti ottimistici con onMutate
useMutation({
mutationFn: likePost,
onMutate: async (id) => {
await queryClient.cancelQueries({ queryKey: ['posts'] });
const prev = queryClient.getQueryData(['posts']);
queryClient.setQueryData(['posts'], old => old.map(p =>
p.id === id ? { ...p, likes: p.likes + 1 } : p));
return { prev };
},
onError: (err, id, ctx) => queryClient.setQueryData(['posts'], ctx.prev),
onSettled: () => queryClient.invalidateQueries({ queryKey: ['posts'] }),
})Reimpostare lo stato della mutazione
const { mutate, isError, reset } = useMutation({ /* ... */ });
{isError && (
<>
<p>Error!</p>
<button onClick={reset}>Try Again</button>
</>
)}Più mutazioni in parallelo
await Promise.all([
mutateAsync({ id: 1, title: 'First' }),
mutateAsync({ id: 2, title: 'Second' }),
]);Verifica rapida
Riepilogo
Prossimo argomento
Domande Frequenti
La lezione «Mutation con useMutation» è gratuita?
Sì — il testo completo di «Mutation con useMutation» è 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 «Mutation con useMutation»?
Invii dati alle API con useMutation, gestisca gli stati di caricamento ed errore e invalidi le query in caso di successo. 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 «Mutation con useMutation»?
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
- Configurazione di React Query e QueryClient
- Caching, stale time e refetch in background
- Mutation con useMutation
- Scroll infinito e paginazione con useInfiniteQuery