Categorias do Site

Guia prático do useActionState no React

Aprenda a usar o useActionState no React para simplificar a gestão de estados e ações assíncronas em formulários.

Ícone de átomo azul claro sobre um fundo texturizado com listras horizontais vermelhas e brancas desbotadas.

Gerenciar o estado de formulários no React pode ser complicado, entre acompanhar valores, lidar com envios assíncronos e erros. O useActionState é um Hook do React que simplifica essa tarefa, facilitando o gerenciamento de ações do usuário, como envios de formulários e mudanças de estado assíncronas. Ele oferece uma forma mais limpa e previsível de lidar com essas situações.

useActionState in React

O useActionState associa uma ação do usuário a um pedaço de estado, simplificando a atualização desse estado conforme a ação é executada. Aqui está um exemplo básico:

const [state, formAction, isPending] = useActionState(actionFn, initialState);

Benefícios principais do useActionState:

  • Reduz o código boilerplate: menos variáveis de estado separadas para carregamento, erros e valores submetidos.
  • Simplifica atualizações assíncronas: gerencia ações baseadas em promessas sem useEffect extra.
  • Melhora a performance: evita re-renderizações desnecessárias ao gerenciar estados de forma eficiente.

Exemplos práticos de useActionState

Aplicativo de contador

Um exemplo básico de uso do useActionState é em um aplicativo de contador. Ele oferece uma maneira limpa de lidar com atualizações assíncronas, como escrever em um servidor ou banco de dados.

"use client";

import { useActionState } from 'react';

async function increment(prevCount) {
  await new Promise(resolve => setTimeout(resolve, 1000));
  return prevCount + 1;
}

function CounterApp() {
  const [count, formAction, isPending] = useActionState(increment, 0);

  return (
    

Count: {count}

); } export default CounterApp;

No exemplo acima, o useActionState gerencia todo o processo de atualização de estado do contador, mantendo o componente simples mesmo ao lidar com operações assíncronas.

Envio de formulário

Para cenários mais complexos, como o envio de formulários com operações assíncronas e feedback para o usuário, o useActionState simplifica a gestão de estados e efeitos.

"use client";

import { useActionState } from "react";

// submit form action
async function submitForm(prevState, formData) {
  await new Promise((resolve) => setTimeout(resolve, 1500));
  const email = formData.get("email");
  if (!email || !email.includes("@")) {
    return { success: false, message: "Please enter a valid email address." };
  }
  return { success: true, message: "Form submitted successfully!" };
}

function FormApp() {
  const [state, formAction, isPending] = useActionState(submitForm, {
    success: null,
    message: "",
  });

  return (
    
{state.message && (

{state.message}

)}
); } export default FormApp;

Este exemplo mostra como o useActionState gerencia o envio de formulários de forma limpa e declarativa, sem variáveis de estado extras.

Conclusão

O useActionState simplifica a lógica de IU ao lidar com fluxos assíncronos, como envios de formulários ou interações com o servidor, acoplando atualizações de estado diretamente a ações do servidor. Experimente este Hook para tornar seu código mais limpo e fácil de manter.

Boa codificação!

  • O que é Vibe Coding? Descubra essa tendência

    Design com IA evolui para além dos wireframes, focando em 'vibe coding'. Entenda essa nova era do design digital.

    Design com IA evolui para além dos wireframes, focando em 'vibe coding'. Entenda essa nova era do design digital.

    Ler notícia completa
    Banner de podcast com título
  • 20 Fontes Futuristas Gratuitas para Design Moderno

    Descubra 20 fontes futuristas gratuitas para dar um toque moderno e inovador aos seus projetos de design.

    Descubra 20 fontes futuristas gratuitas para dar um toque moderno e inovador aos seus projetos de design.

    Ler notícia completa
    Imagem de fundo cósmico com tonalidades de azul e rosa representando o espaço, contendo a palavra
  • 6 Melhores Plugins de Blocos Gutenberg para WordPress

    Descubra os 6 melhores plugins de blocos Gutenberg para criar páginas incríveis no WordPress.

    Descubra os 6 melhores plugins de blocos Gutenberg para criar páginas incríveis no WordPress.

    Ler notícia completa
    Interface de usuário de um software com um campo de pesquisa e ícones de recursos como
  • Navegação na Internet para Pessoas Cegas

    Sylvie Duchateau é consultora de acessibilidade digital há mais de 20 anos. Após trabalhar em associações como BrailleNet e na cooperativa Access42, ela decidiu se tornar freelancer. Sylvie é especialista em leitores de tela, oferece treinamentos e testes de acessibilidade, e é voluntária na conferência Paris Web desde 2021. Nos conhecemos na edição de 2024 […]

    Sylvie Duchateau fala sobre desafios e soluções para acessibilidade digital de pessoas cegas na web.

    Ler notícia completa
    Mulher sorridente abraça labrador bege em ambiente interno com plantas ao fundo.
  • Guia de Estilo vs. Sistema de Design: Diferenças

    Embora muitos designers usem guias de estilo e sistemas de design de forma intercambiável, eles são ferramentas distintas com suas próprias forças e fraquezas. Compreender suas diferenças é crucial para evitar impactos negativos no processo de design e desenvolvimento de produtos. Um guia de estilo é um documento que apresenta diretrizes para manter a consistência […]

    Entenda as diferenças entre guias de estilo e sistemas de design e como usá-los no design de produtos.

    Ler notícia completa
    Ícone estilizado de um computador exibindo uma imagem de documento com texto e caixas de marcação, acompanhado de um lápis, sobre fundo texturizado azul.
  • AI substituirá PMs? Como proteger sua carreira

    Grupos de PMs em redes sociais frequentemente discutem se a IA substituirá seus empregos. Já é comum ver agentes de IA realizando tarefas básicas de gerenciamento de produtos, como criar roteiros e analisar dados. “Oi ChatGPT, pode criar um roteiro de três meses para meu produto?” “Oi Claude, pode ajudar com perguntas de pesquisa para […]

    Descubra como a IA está impactando os gerentes de produto e como eles podem se adaptar para proteger suas carreiras.

    Ler notícia completa
    Duas chaves inglesas roxas cruzadas sobre um fundo texturizado escuro.
  • Como Criar uma Jornada Moderna do Cliente

    Oren Halperin é Vice-Presidente de Comércio Digital na AJ Madison, uma líder omnichannel em eletrodomésticos. Ele compartilha estratégias para engajar clientes na jornada de compra digital moderna. Em nossa conversa, Oren fala sobre como engajar clientes através de diversos pontos de contato em uma jornada moderna de compra digital. Ele também compartilha práticas recomendadas e […]

    Descubra estratégias eficazes para engajar clientes e aumentar as conversões online em uma jornada digital moderna.

    Ler notícia completa
    Banner azul com círculos roxos e azuis, mostrando Oren Halperin, Vice-Presidente de Comércio Digital na AJ Madison, com logos da LogRocket e AJ Madison.
  • Configurar variáveis de ambiente no Next.js

    Neste artigo, você aprenderá a gerenciar variáveis de ambiente no Next.js usando arquivos .env. Vamos abordar variáveis públicas vs. privadas, hierarquia de arquivos de variáveis de ambiente, limitações de tempo de execução e melhores práticas para configuração segura em desenvolvimento e produção. O que são variáveis de ambiente no Next.js? As variáveis de ambiente no […]

    Aprenda a gerenciar variáveis de ambiente no Next.js, diferenciando públicas e privadas, e suas práticas recomendadas.

    Ler notícia completa
    Ícone circular preto com a letra 'N' branca sobre fundo colorido com tons de azul, verde e roxo, destacado por bolhas luminosas.
  • Dicas para criar testes grátis que convertem

    No passado, os testes gratuitos eram uma tática eficaz para aumentar taxas de conversão e atrair usuários para serviços premium. Oferecer algo de graça era suficiente, mas isso mudou. Hoje, quase todos os produtos de assinatura oferecem um teste gratuito, o que deixou de ser um diferencial competitivo. Testes mal otimizados podem resultar em alta […]

    Aprenda estratégias para otimizar testes gratuitos e aumentar conversões em seus serviços.

    Ler notícia completa
    Ícone de um cartão de presente laranja com laço amarelo dentro de uma moldura roxa, à esquerda de três linhas de texto, sobre fundo azul desfocado.