Executando Efeitos com useEffect
O React oferece uma poderosa ferramenta chamada useEffect
, que permite gerenciar efeitos colaterais em seus componentes funcionais. Um dos casos mais comuns é a necessidade de executar um efeito apenas uma vez, logo que o componente é montado. Isso é especialmente útil para carregamento de dados, assinaturas de eventos ou qualquer ação que deva ocorrer apenas na primeira renderização do componente.
O que é o useEffect?
O useEffect
é um Hook que aceita uma função de callback como argumento. Essa função é executada após a renderização do componente. Por padrão, o useEffect
é chamado após a renderização do componente, mas podemos controlá-lo ainda mais usando o segundo argumento, que é um array de dependências.
Como executar um efeito apenas uma vez?
Para garantir que o efeito seja executado apenas na montagem do componente, passamos um array vazio como segundo argumento. Isso indica ao React que não há dependências que, se mudadas, deveriam causar uma nova execução do efeito.
Aqui está um exemplo:
import React, { useEffect } from 'react';
const MeuComponente = () => {
useEffect(() => {
console.log('O componente foi montado!');
}, []);
return <div>Meu Componente</div>;
};
export default MeuComponente;
Neste exemplo, ao montar MeuComponente
, a mensagem "O componente foi montado!" será exibida no console. O array vazio []
garante que o efeito não será executado novamente em futuras renderizações.
Por que usar o useEffect?
Utilizar o useEffect
para gerenciar efeitos colaterais permite que você mantenha o código limpo e organizado. Ao invés de misturar a lógica de efeito diretamente no corpo do componente, você pode isolá-la dentro de useEffect
, melhorando a legibilidade e a manutenção do código.
Considerações Importantes
É crucial ter em mente que, se você não passar o array de dependências ou passar um array com variáveis, o useEffect
será chamado a cada renderização do componente, o que pode levar a comportamentos inesperados e problemas de performance. Portanto, sempre que você quiser um efeito que execute apenas uma vez, utilize o array vazio.
Exemplos Práticos
- Carregar dados de uma API: Se você está buscando dados de uma API ao montar um componente, você pode usar o
useEffect
para fazer essa chamada uma única vez.
import React, { useEffect, useState } from 'react';
const MeuComponente = () => {
const [dados, setDados] = useState(null);
useEffect(() => {
fetch('https://api.exemplo.com/dados')
.then(response => response.json())
.then(data => setDados(data));
}, []);
return <div>{dados ? JSON.stringify(dados) : 'Carregando...'}</div>;
};
export default MeuComponente;
Aqui, os dados são buscados e armazenados no estado do componente, mas a chamada à API ocorre apenas na montagem.
- Adicionar um Event Listener: Você pode querer adicionar um listener a um evento do DOM. No exemplo abaixo, adicionamos um listener ao
resize
da janela.
import React, { useEffect } from 'react';
const MeuComponente = () => {
useEffect(() => {
const handleResize = () => {
console.log('A janela foi redimensionada!');
};
window.addEventListener('resize', handleResize);
return () => {
window.removeEventListener('resize', handleResize);
};
}, []);
return <div>Meu Componente</div>;
};
export default MeuComponente;
Neste caso, o listener é adicionado na montagem e removido na desmontagem do componente, evitando vazamentos de memória.
Conclusão
O useEffect
é uma ferramenta poderosa que, quando utilizada corretamente, pode melhorar significativamente a qualidade e a eficiência do seu código. Executar um efeito apenas uma vez ao montar um componente é uma prática comum e essencial no desenvolvimento com React. Ao entender como e quando usar o useEffect
, você estará mais preparado para gerenciar efeitos colaterais de maneira eficaz em suas aplicações React.
A importância do Hook useEffect no desenvolvimento React
Compreender como o React gerencia efeitos colaterais é fundamental para qualquer desenvolvedor que deseja criar aplicações eficientes. O uso do Hook useEffect
é uma das melhores práticas, permitindo que você controle a execução de código em diferentes momentos do ciclo de vida do componente. Este conhecimento não apenas aprimora suas habilidades de programação, mas também contribui para a criação de aplicações mais responsivas e escaláveis. Ao dominar o useEffect
, você se prepara para desafios mais complexos no universo do React.
Algumas aplicações:
- Gerenciamento de APIs
- Configuração de assinaturas de eventos
- Manipulação de timers
Dicas para quem está começando
- Estude o ciclo de vida dos componentes
- Pratique com exemplos simples
- Leia a documentação oficial do React

Gabriel Nogueira
Desenvolvedor front-end especializado em React e design de interfaces responsivas.
Mais sobre o autor