Introdução
No desenvolvimento com React, pode haver situações em que você precisa controlar a renderização de um componente com base em um intervalo de tempo. Isso pode ser útil para mostrar animações, exibir mensagens temporárias ou até mesmo controlar a carga de dados. Neste tutorial, vamos explorar como garantir que um componente só seja renderizado após um determinado tempo utilizando o Hook useEffect
e o setTimeout
.
Utilizando o useEffect
O Hook useEffect
permite que você execute efeitos colaterais em componentes funcionais. Para implementar a renderização condicional de um componente após um tempo, nós o utilizaremos em conjunto com o setTimeout
.
import React, { useState, useEffect } from 'react';
const DelayedComponent = () => {
const [isVisible, setIsVisible] = useState(false);
useEffect(() => {
const timer = setTimeout(() => {
setIsVisible(true);
}, 3000); // 3 segundos
return () => clearTimeout(timer); // Limpa o timer se o componente for desmontado
}, []);
return (
<div>
{isVisible && <h1>Componente Renderizado!</h1>}
</div>
);
};
export default DelayedComponent;
Este código cria um componente que, após 3 segundos, renderiza um título na tela. A função setTimeout
é utilizada para definir um atraso antes de mudar o estado isVisible
para true
. O uso do clearTimeout
no retorno do useEffect
é uma boa prática para evitar possíveis vazamentos de memória, caso o componente seja desmontado antes do timer expirar.
Explicação do Código
- Importação dos Hooks: Importamos
useState
euseEffect
do React. - Estado Inicial: Definimos um estado
isVisible
que inicialmente éfalse
, indicando que o componente não deve ser exibido. - Efeito Colateral: No
useEffect
, configuramos um timer que mudará o estado após 3 segundos. O retorno douseEffect
garante que o timer seja limpo caso o componente seja desmontado antes do tempo. - Renderização Condicional: Utilizamos uma expressão JSX para renderizar o título apenas quando
isVisible
étrue
.
Considerações sobre Performance
É importante mencionar que o uso de delay na renderização pode impactar a experiência do usuário, especialmente em aplicações onde a performance é crítica. Certifique-se de que o uso de atrasos seja justificado e que não prejudique a usabilidade da sua aplicação.
Exemplos Práticos
Além do exemplo acima, você pode utilizar essa abordagem em diversas situações, como:
- Exibir um loader enquanto dados estão sendo carregados.
- Mostrar mensagens de sucesso ou erro após a conclusão de uma ação.
- Implementar animações que ocorrem após um atraso.
const LoadingComponent = () => {
const [loading, setLoading] = useState(true);
useEffect(() => {
const timer = setTimeout(() => {
setLoading(false);
}, 5000); // 5 segundos
return () => clearTimeout(timer);
}, []);
return (
<div>
{loading ? <p>Loading...</p> : <p>Conteúdo Carregado!</p>}
</div>
);
};
Nesse caso, o componente LoadingComponent
exibirá uma mensagem de "Loading..." por 5 segundos antes de mostrar o conteúdo carregado. Essa técnica é muito utilizada em aplicações que realizam chamadas assíncronas para APIs.
Conclusão
Controlar a renderização de componentes com base no tempo é uma habilidade útil em React. Ao dominar o uso do useEffect
e do setTimeout
, você pode criar interfaces mais dinâmicas e responsivas. Sempre tenha em mente as boas práticas de performance e usabilidade ao implementar esses recursos.
Através deste tutorial, você aprendeu como garantir que um componente só seja renderizado após um determinado tempo, e viu exemplos práticos de como aplicar essa técnica em diferentes cenários.
A Importância da Renderização Condicional em React
A renderização condicional de componentes é uma técnica frequentemente utilizada no desenvolvimento com React. Entender como controlar o tempo de exibição de um componente pode melhorar a experiência do usuário, tornando a interface mais interativa e responsiva. Por exemplo, você pode usar essa técnica para mostrar mensagens temporárias ou loaders enquanto os dados estão sendo processados. Além disso, essa abordagem é útil para criar animações e transições que dependem de um atraso específico. Neste contexto, dominar o uso do useEffect
e do setTimeout
é essencial para qualquer desenvolvedor que deseja criar aplicações robustas com React.
Algumas aplicações:
- Exibir loaders enquanto dados são carregados
- Mostrar mensagens de sucesso ou erro
- Implementar animações com atraso
Dicas para quem está começando
- Comece com exemplos simples antes de avançar para usos mais complexos.
- Teste diferentes tempos de delay para entender o impacto na experiência do usuário.
- Certifique-se de limpar timers para evitar vazamentos de memória.

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