Effect Pitfalls Armadilhas Comuns de Effect

Última atualização: 2026-11-03

Effect Pitfalls Armadilhas Comuns de Effect

As armadilhas do useEffect se concentram no array de dependências: uma dependência ausente lê um valor obsoleto, chamar setState dentro de um Effect que também depende desse estado causa um loop infinito, uma dependência de objeto ou função é uma nova referência a cada renderização, e esquecer o cleanup empilha listeners duplicados. Reconheça essas quatro classes de problema e a maioria dos Effects se torna segura, pois o corpo do Effect finalmente faz apenas o que seu nome promete.

GrupoRoteamento e Gerenciamento
TipoPadrão

ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.

📝 Sintaxe

useEffect(() => {
  document.title = 'Current ' + count + ' times' // ① if you use count, declare it as a dependency
}, [count])                               // ② dependency array: re-run only when it changes

useEffect(() => {
  const id = setInterval(tick, 1000)
  return () => clearInterval(id)          // ③ clean up on unmount to avoid stacking
}, [])

Retorna:Sem valor de retorno; trata-se de um padrão de codificação, não de uma API chamável.

▶ Exemplo

O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.

Saída:

A lista é atualizada conforme você digita, e o contador de execuções do Effect só aumenta quando query muda; abaixo, estão descritas as consequências das três grandes armadilhas: dependência ausente, loop infinito e dependência de objeto.

💡 Pontos-chave

⚠️ Aviso Definir estado dentro de um Effect quando esse mesmo estado também é uma dependência é a principal fonte de loops infinitos; pergunte-se primeiro: "será que esse valor poderia ser derivado durante a renderização?".
💡 Dica Dependências de objeto, array e função são novas referências a cada renderização — envolva-as com useMemo/useCallback, ou reduza a dependência a um valor primitivo.
ℹ️ Informação Em desenvolvimento, o React 18 StrictMode monta, desmonta e remonta cada Effect de propósito, o que revela cleanups ausentes para você.
Mais casos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

P Por que meu Effect entra em loop infinito?
R Um setState dentro do Effect muda um valor que também é uma dependência → o estado muda → o Effect roda de novo → ele define o estado novamente, e assim por diante. Resolva removendo essa dependência, reduzindo a lista de dependências ou derivando o valor durante a renderização.
P O que exatamente deve ir no array de dependências?
R Todo valor reativo que o Effect lê: props, state e variáveis e funções definidas dentro do componente. A regra exhaustive-deps do eslint lembra você dos que você esquece.
P Um array vazio [] significa que ele roda apenas uma vez?
R Significa "independente de qualquer valor": roda uma vez na montagem e o cleanup roda na desmontagem. Se ele lê state internamente, sempre vê o valor inicial — a armadilha do fechamento.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%