0Pricing
React Academy · Lezione

useOptimistic per feedback immediati

Mostri aggiornamenti ottimistici dell'interfaccia mentre una mutation server è in corso con useOptimistic.

useOptimistic per feedback immediati è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 4 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 utilizzerà l'hook useOptimistic di React 19 per mostrare modifiche ottimistiche immediate nell'interfaccia mentre è in corso una mutazione del server, con ripristino automatico in caso di errore.

Che cos'è un'interfaccia ottimistica?

Un'interfaccia ottimistica presuppone che una mutazione del server avrà successo e aggiorna subito l'interfaccia, senza attendere la risposta del server. Se l'operazione non riesce, viene ripristinato lo stato precedente.

Nozioni di base su useOptimistic

useOptimistic accetta lo stato effettivo e una funzione di aggiornamento. Restituisce lo stato ottimistico e una funzione per applicare gli aggiornamenti ottimistici.
'use client';
import { useOptimistic } from 'react';

const [optimisticLikes, addOptimisticLike] = useOptimistic(
  likes,                      // actual state from server
  (state, newLike) => [...state, newLike] // how to apply optimistic update
);

Esempio di un pulsante Mi piace

Quando l'utente seleziona Mi piace, mostri immediatamente il nuovo like nell'interfaccia tramite addOptimisticLike, quindi invii la richiesta effettiva. Se la richiesta non riesce, lo stato ottimistico torna automaticamente allo stato effettivo.
async function handleLike() {
  addOptimisticLike({ id: Date.now(), user: currentUser });
  await likePost(postId); // server action
}

Dove risiede lo stato ottimistico

optimisticLikes mostra il valore ottimistico durante la transizione. Quando il server risponde e lo stato effettivo `likes` viene aggiornato tramite la rivalidazione, useOptimistic si sincronizza automaticamente di nuovo con lo stato effettivo.

Indicatore di attesa per gli elementi ottimistici

Contrassegni visivamente gli elementi ottimistici, ad esempio rendendoli leggermente più trasparenti, in modo che gli utenti sappiano che sono in attesa. Può aggiungere il flag `pending: true` nell'aggiornamento ottimistico e applicare lo stile di conseguenza.
const [optimisticMessages, addOptimistic] = useOptimistic(
  messages,
  (state, msg) => [...state, { ...msg, pending: true }]
);

// Render
{optimisticMessages.map(m => (
  <div key={m.id} style={{ opacity: m.pending ? 0.6 : 1 }}>{m.text}</div>
))}

Utilizzare useOptimistic all'interno di una Transition

useOptimistic funziona solo all'interno di una React Transition, ovvero startTransition o useTransition. Quando si utilizzano le Server Actions con React 19, questa gestione avviene automaticamente.
'use client';
import { startTransition } from 'react';

const handleSubmit = (data) => {
  startTransition(async () => {
    addOptimistic(data);
    await serverAction(data);
  });
};

Esempio di invio di un messaggio in chat

Mostri immediatamente nella lista della chat un messaggio inviato mentre il server lo salva. Il messaggio appare subito con lo stato «Invio...», poi passa a «Inviato» quando il server conferma l'operazione.

Comportamento del ripristino in caso di errore

Se la Server Action non riesce, perché genera un'eccezione o viene rifiutata, useOptimistic elimina automaticamente il valore ottimistico e ripristina l'ultimo stato effettivo. Non è necessario implementare manualmente il ripristino.

useOptimistic e aggiornamenti ottimistici manuali

Prima di useOptimistic, era necessario gestire due variabili di stato, effettivo e ottimistico, e ripristinare manualmente lo stato in un blocco catch. useOptimistic riunisce tutto in un singolo hook con ripristino automatico.

Verifica rapida

Che cosa accade allo stato ottimistico se la Server Action che lo ha attivato non riesce?

Riepilogo

useOptimistic(actualState, updater) restituisce [optimisticState, addOptimistic]. Chiami addOptimistic prima della Server Action per fornire un riscontro immediato. React ripristina automaticamente lo stato se l'azione non riesce. Funziona all'interno delle React Transitions.

Corso completato

Congratulazioni! Ha completato **Server Components & React 19 Features**. Ora conosce gli RSC, l'hook use(), le Actions, useActionState e useOptimistic per lo sviluppo moderno con React.

Domande Frequenti

La lezione «useOptimistic per feedback immediati» è gratuita?

Sì — il testo completo di «useOptimistic per feedback immediati» è 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 «useOptimistic per feedback immediati»?

Mostri aggiornamenti ottimistici dell'interfaccia mentre una mutation server è in corso con useOptimistic. 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 4 di 4.

Quanto tempo richiede la lezione «useOptimistic per feedback immediati»?

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. React Server Components: spiegazione
  2. L'hook use() per le risorse asincrone
  3. React Actions e useActionState
  4. useOptimistic per feedback immediati
← Torna a React Academy