Executando Efeitos com useEffect no Montar de Componentes React

Aprenda a utilizar o Hook useEffect para rodar efeitos colaterais quando um componente é montado.

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

  1. 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.

  1. 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.

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
Foto de Gabriel Nogueira
Contribuições de
Gabriel Nogueira

Desenvolvedor front-end especializado em React e design de interfaces responsivas.

Mais sobre o autor
Compartilhe este tutorial: Como executar um efeito apenas uma vez ao montar um componente?

Compartilhe este tutorial

Continue aprendendo:

Como evitar loops infinitos dentro do useEffect?

Dicas valiosas para evitar loops infinitos no useEffect e garantir a performance e estabilidade da sua aplicação React.

Tutorial anterior

Qual a diferença entre useEffect com e sem array de dependências?

Entenda como usar o useEffect corretamente no React e suas implicações.

Próximo tutorial