Pular para o conteúdo
Skillpedia
Sites e telas (frontend)40 mil · #5326

react18-batching-patterns

Fornece padrões para corrigir problemas de 'batching' em componentes React 18. Ajuda a resolver chamadas 'setState' múltiplas em métodos assíncronos.

O que ela faz

Esta ferramenta ajuda a corrigir um problema comum em um código mais antigo (chamado de 'class components') que usa React 18. Ela garante que atualizações na tela aconteçam juntas, em vez de separadas, melhorando a performance.

Quando usar

  • ✓Quando você tem várias atualizações na tela que não aparecem juntas.
  • ✓Se o seu código atualiza o estado várias vezes dentro de funções assíncronas (async/await, Promises, setTimeout).
  • ✓Se você está tendo problemas de performance ou bugs visuais após atualizar para o React 18.

Exemplo do que pedir para a IA

“Como posso fazer as atualizações na tela do meu componente de classe funcionarem corretamente com o React 18?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/github/awesome-copilot/blob/main/skills/react18-batching-patterns/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/react18-batching-patterns/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela analisa onde você chama as atualizações de tela (setState) em seu código. Se elas estiverem em locais que o React 18 agrupa automaticamente (como dentro de eventos), ela sugere como arrumar. Se não, ela ajuda a decidir se precisa forçar uma atualização imediata (flushSync) ou refatorar o código.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add github/awesome-copilot --skill react18-batching-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/react18-batching-patterns/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Padrões de Agrupamento Automático do React 18

Referência para diagnosticar e corrigir a alteração silenciosa mais perigosa no React 18 para bases de código com componentes de classe.

A Mudança Principal

Localização do setState React 17 React 18
Manipulador de eventos do React Agrupado Agrupado (o mesmo)
setTimeout Renderização imediata Agrupado
Promise .then() / .catch() Renderização imediata Agrupado
async/await Renderização imediata Agrupado
Callback nativo addEventListener Renderização imediata Agrupado

Agrupado significa: todas as chamadas de setState dentro desse contexto de execução são processadas juntas em uma única renderização no final. Nenhuma renderização intermediária ocorre.

Diagnóstico Rápido

Leia todos os métodos de classe assíncronos. Pergunte: algum código após um await lê this.state para tomar uma decisão?

Code reads this.state after await?
  YES → Category A (silent state-read bug)
  NO, but intermediate render must be visible to user?
    YES → Category C (flushSync needed)
    NO → Category B (refactor, no flushSync)

Para o padrão completo de cada categoria, leia:

  • references/batching-categories.md - Categoria A, B, C com código completo antes/depois
  • references/flushSync-guide.md - quando usar flushSync, quando NÃO usar, sintaxe de importação

A Regra do flushSync

Use flushSync com moderação. Isso força uma renderização síncrona, contornando o scheduler concorrente do React 18. O uso excessivo anula os benefícios de desempenho do React 18.

Use flushSync apenas quando:

  • O usuário deve ver um estado de UI intermediário antes que uma operação assíncrona comece
  • Um estado de spinner/carregamento deve renderizar antes que uma busca comece
  • Passos de UI sequenciais têm estados visíveis distintos (assistente de progresso, fluxo de várias etapas)

Na maioria dos casos, a correção é um refatoramento - reestruturar o código para não ler this.state após await. Leia references/batching-categories.md para a abordagem correta por categoria.

Perguntas frequentes

O que é 'batching'?

'Batching' é quando o React agrupa várias atualizações de tela em uma só para que a interface do usuário não precise ser redesenhada várias vezes, o que melhora a performance.

O que mudou no React 18?

No React 18, o 'batching' (agrupamento de atualizações) passou a funcionar automaticamente em mais lugares, como dentro de funções assíncronas (setTimeout, Promises). Isso é bom, mas pode quebrar códigos antigos que dependiam de atualizações imediatas.

Quando devo usar `flushSync`?

Use `flushSync` apenas quando for essencial que o usuário veja uma atualização na tela imediatamente, antes de uma operação demorada começar. Na maioria dos casos, é melhor arrumar o código ('refatorar') em vez de usar `flushSync`.

Detalhes

Descrição original do autor

Provides exact patterns for diagnosing and fixing automatic batching regressions in React 18 class components. Use this skill whenever a class component has multiple setState calls in an async method, inside setTimeout, inside a Promise .then() or .catch(), or in a native event handler. Use it before writing any flushSync call - the decision tree here prevents unnecessary flushSync overuse. Also u

repo: github/awesome-copilot

Popularidade

Estrelas no GitHub
40 mil
Posição no ranking
#5326
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas