0Pricing
React Academy · Aula

useOptimistic para feedback instantâneo

Exiba atualizações otimistas da interface enquanto uma mutação do servidor está em andamento com useOptimistic.

useOptimistic para feedback instantâneo é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

Boas-vindas

Nesta lição, você usará o gancho useOptimistic do React 19 para mostrar alterações otimistas instantâneas na interface enquanto uma alteração no servidor estiver em andamento, com reversão automática em caso de falha.

O que é uma interface otimista?

Uma interface otimista pressupõe que uma alteração no servidor será bem-sucedida e atualiza a interface imediatamente, sem esperar a resposta do servidor. Se a alteração falhar, você reverte para o estado anterior.

Noções básicas de useOptimistic

useOptimistic aceita o estado real e uma função atualizadora. Ele retorna o estado otimista e uma função para aplicar atualizações otimistas.
'use client';
import { useOptimistic } from 'react';

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

Exemplo de botão Curtir

Quando o usuário clica em Curtir, mostre imediatamente a nova curtida na interface por meio de addOptimisticLike e, em seguida, envie a solicitação real. Se a solicitação falhar, o estado otimista será revertido automaticamente para o estado real.
async function handleLike() {
  addOptimisticLike({ id: Date.now(), user: currentUser });
  await likePost(postId); // server action
}

Onde fica o estado otimista

optimisticLikes mostra o valor otimista durante a transição. Quando o servidor responde e o estado real de `likes` é atualizado (por meio da revalidação), useOptimistic é sincronizado automaticamente novamente com o estado real.

Indicador de pendência em itens otimistas

Marque visualmente os itens otimistas (por exemplo, deixando-os levemente esmaecidos) para que os usuários saibam que estão pendentes. Você pode adicionar uma sinalização `pending: true` à atualização otimista e aplicar o estilo correspondente.
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>
))}

Usando dentro de uma transição

useOptimistic funciona apenas dentro de uma Transição do React (startTransition ou useTransition). Ao usar Ações do Servidor com o React 19, isso é tratado automaticamente.
'use client';
import { startTransition } from 'react';

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

Exemplo de envio de mensagem de chat

Mostre imediatamente uma mensagem enviada na lista do chat enquanto o servidor a salva. A mensagem aparece instantaneamente com o status 'Enviando...' e depois muda para 'Enviada' quando o servidor confirma.

Comportamento de reversão em caso de erro

Se a ação do servidor falhar (lançar uma exceção ou ser rejeitada), useOptimistic descarta automaticamente o valor otimista e reverte para o último estado real. Você não precisa implementar a reversão manualmente.

useOptimistic versus atualizações otimistas manuais

Antes de useOptimistic, você gerenciava duas variáveis de estado (real e otimista) e fazia a reversão manualmente em um bloco catch. useOptimistic reúne isso em um único gancho com reversão automática.

Verificação rápida

O que acontece com o estado otimista se a ação do servidor que o iniciou falhar?

Recapitulação

useOptimistic(actualState, updater) retorna [optimisticState, addOptimistic]. Chame addOptimistic antes da ação do servidor para obter feedback instantâneo. O React reverte automaticamente se a ação falhar. Funciona dentro das Transições do React.

Curso concluído

Parabéns! Você concluiu **Componentes do Servidor e recursos do React 19**. Agora você entende os componentes do servidor do React (RSCs), o gancho use(), as Ações, useActionState e useOptimistic para o desenvolvimento moderno com React.

Perguntas Frequentes

A aula “useOptimistic para feedback instantâneo” é grátis?

Sim — o texto completo de “useOptimistic para feedback instantâneo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “useOptimistic para feedback instantâneo”?

Exiba atualizações otimistas da interface enquanto uma mutação do servidor está em andamento com useOptimistic. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “useOptimistic para feedback instantâneo”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Componentes de servidor do React explicados
  2. O hook use() para recursos assíncronos
  3. Ações do React e useActionState
  4. useOptimistic para feedback instantâneo
← Voltar para React Academy