0Pricing
React Academy · Aula

Ações do React e useActionState

Defina ações de servidor e cliente, trate envios de formulários e acompanhe estados pendentes.

Ações do React e useActionState é uma aula grátis de React Academy no CoddyKit. Esta é a aula 3 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ê definirá Ações do React 19, usará useActionState para gerenciar o estado de envio de formulários e tratará os estados pendente e de erro de forma organizada.

O que são as Ações do React?

Ações são funções assíncronas que você passa à propriedade `action` do formulário (ou a `formAction` do botão). O React 19 as trata de maneira especial: acompanha o estado pendente, trata erros e integra-se automaticamente às Transições.

Ações do servidor no Next.js

No Next.js com o Roteador de Aplicativo, adicione 'use server' ao início de uma função para transformá-la em uma Ação do Servidor. O React a chama no servidor quando um formulário é enviado — não é necessária uma rota de API.
'use server';

export async function createPost(formData) {
  const title = formData.get('title');
  await db.insert(posts).values({ title });
  revalidatePath('/posts');
}

Usando uma ação em um formulário

Passe a ação do servidor ou do cliente diretamente à propriedade `action` do formulário. O React a chama com os dados FormData quando o formulário é enviado.
import { createPost } from './actions';

export default function NewPostForm() {
  return (
    <form action={createPost}>
      <input name="title" />
      <button type="submit">Create</button>
    </form>
  );
}

useActionState

useActionState envolve uma ação para fornecer o estado atual (o último resultado da ação) e um booleano pendente. A função envolvida é passada à ação do formulário.
'use client';
import { useActionState } from 'react';
import { createPost } from './actions';

function NewPostForm() {
  const [state, action, isPending] = useActionState(createPost, null);
  return (
    <form action={action}>
      {state?.error && <p>{state.error}</p>}
      <input name="title" />
      <button disabled={isPending}>Create</button>
    </form>
  );
}

Ação que retorna estado

A ação do servidor recebe `(prevState, formData)` quando é usada com useActionState. Retorne um objeto com informações de sucesso ou erro — ele se tornará o novo estado.
'use server';

export async function createPost(prevState, formData) {
  const title = formData.get('title')?.toString();
  if (!title) return { error: 'Title is required' };
  await db.insert(posts).values({ title });
  return { success: true };
}

isPending para desativar o envio

Use o valor isPending de useActionState para desativar o botão de envio e mostrar um indicador de carregamento enquanto a ação está em execução.
<button type="submit" disabled={isPending}>
  {isPending ? 'Saving...' : 'Save'}
</button>

Ações do cliente

As ações não precisam ser executadas no servidor. Uma ação do cliente é uma função assíncrona comum sem 'use server'. Ela ainda recebe o gerenciamento de estado e de pendência de useActionState.
async function clientAction(prevState, formData) {
  const res = await fetch('/api/post', {
    method: 'POST', body: formData,
  });
  if (!res.ok) return { error: 'Failed' };
  return { success: true };
}

useFormStatus para componentes filhos

Em um botão de envio profundamente aninhado, use `useFormStatus()` para ler o estado pendente do formulário pai sem precisar repassar propriedades por vários componentes.
'use client';
import { useFormStatus } from 'react-dom';

function SubmitButton() {
  const { pending } = useFormStatus();
  return <button disabled={pending}>Submit</button>;
}

Aprimoramento progressivo

As Ações do React com Ações do Servidor funcionam mesmo sem JavaScript (aprimoramento progressivo). O navegador envia um POST de formulário nativo ao manipulador do Next.js, tornando o recurso funcional antes do carregamento de JS.

Verificação rápida

O que useActionState retorna que permite mostrar um estado de carregamento enquanto uma ação de formulário é executada?

Recapitulação

As Ações do React são funções assíncronas passadas à ação do formulário. useActionState envolve uma ação para fornecer o estado, uma função de ação envolvida e isPending. As Ações do Servidor adicionam 'use server' e são executadas no servidor.

A seguir

Próxima lição: **useOptimistic para feedback instantâneo** — você mostrará atualizações otimistas da interface enquanto uma alteração no servidor estiver em andamento.

Perguntas Frequentes

A aula “Ações do React e useActionState” é grátis?

Sim — o texto completo de “Ações do React e useActionState” é 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 “Ações do React e useActionState”?

Defina ações de servidor e cliente, trate envios de formulários e acompanhe estados pendentes. 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 3 de 4.

Quanto tempo leva a aula “Ações do React e useActionState”?

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