0Pricing
React Academy · Aula

IntersectionObserver para efeitos acionados pela rolagem

Use IntersectionObserver dentro de useEffect para acionar animações, carregamento tardio e rolagem infinita.

IntersectionObserver para efeitos acionados pela rolagem é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

O que IntersectionObserver faz

A API IntersectionObserver monitora com eficiência se um ou mais elementos entram ou saem da área visível do navegador (ou de um elemento ancestral especificado). Diferentemente dos ouvintes de rolagem, que são acionados a cada pixel, o observador chama seu retorno de chamada somente quando o elemento ultrapassa um limiar, o que proporciona um desempenho muito melhor para efeitos baseados em rolagem.

O retorno de chamada e a entrada do observador

O retorno de chamada recebe uma matriz de objetos IntersectionObserverEntry, um para cada elemento observado. Cada entrada tem um booleano isIntersecting (verdadeiro quando está visível) e um número intersectionRatio entre 0 e 1 (a fração do elemento que está visível no momento). Use esses valores para determinar o estado de visibilidade.

Criando um observador em useEffect

Crie o observador dentro de um useEffect e chame observer.observe(ref.current) para começar a observar o elemento. A referência deve estar anexada ao elemento DOM que você deseja acompanhar. Crie o observador depois que o componente for montado, para que ref.current esteja preenchido.

Limpeza: unobserve e disconnect

Na função de limpeza de useEffect, chame observer.unobserve(element) para parar de observar um elemento específico ou observer.disconnect() para interromper todas as observações. Esquecer a limpeza faz com que o observador continue existindo depois que o componente for desmontado, podendo causar erros ou vazamentos de memória.

A opção de limiar

A opção threshold controla quando o retorno de chamada é disparado. Um valor de 0 é acionado assim que qualquer pixel do elemento fica visível. Um valor de 1 é acionado somente quando o elemento está totalmente visível. Você também pode passar uma matriz como [0, 0.5, 1] para receber retornos de chamada em vários níveis de visibilidade.

A opção rootMargin

rootMargin amplia ou reduz a área efetiva de interseção usando uma sintaxe semelhante à do CSS: '100px 0px' é acionado 100px antes de o elemento entrar na área visível. Use '-100px' para acionar somente quando o elemento estiver 100px dentro da área visível. Isso é útil para pré-carregar conteúdo ou iniciar uma animação antes que o elemento esteja totalmente visível.

Carregamento sob demanda de imagens

Para carregar imagens sob demanda, defina inicialmente um atributo data-src em vez de src. Quando o observador for acionado com isIntersecting: true, copie data-src para src para iniciar a solicitação de rede. Em seguida, chame observer.unobserve(entry.target), pois a imagem só precisa ser carregada uma vez.

Animações acionadas pela rolagem

Para animações de aparecimento gradual, adicione uma classe CSS quando isIntersecting se tornar verdadeiro: element.classList.add('visible'). Defina a transição em CSS: .card { opacity: 0; transform: translateY(20px); transition: opacity 0.4s, transform 0.4s; } e .card.visible { opacity: 1; transform: none; }. O observador aciona o efeito com eficiência.

Análise: acompanhamento do conteúdo visualizado

IntersectionObserver é ideal para acompanhar visualizações. Quando um elemento com o atributo data-analytics-id se torna visível com um limiar de 0.5, dispare um evento de análise. Isso mede com precisão quais seções do conteúdo os usuários realmente leem, sendo muito mais confiável do que uma simples porcentagem da profundidade da rolagem.

Observando vários elementos

Uma única instância de IntersectionObserver pode observar vários elementos chamando observer.observe(element) para cada um deles. Todos os elementos observados compartilham a mesma função de retorno e as mesmas opções. Use entry.target dentro da função de retorno para identificar qual elemento acionou a notificação.

Criando o gancho useInView

Um gancho reutilizável useInView retorna [ref, inView]. Anexe ref a qualquer elemento e leia inView para saber se ele está visível no momento. O gancho aceita um objeto de options para definir o limiar e rootMargin. Essa abstração torna os efeitos de rolagem declarativos em qualquer componente.

Limiar do IntersectionObserver

O que significa um limiar de IntersectionObserver igual a 0?

Recapitulação da lição: IntersectionObserver

IntersectionObserver acompanha com eficiência a visibilidade dos elementos usando isIntersecting e intersectionRatio. Sempre faça a limpeza com unobserve ou disconnect. Use threshold para controlar o ponto de acionamento e rootMargin para ampliar a zona de detecção. Use-o para carregamento sob demanda, animações e acompanhamento de análises.

Perguntas Frequentes

A aula “IntersectionObserver para efeitos acionados pela rolagem” é grátis?

Sim — o texto completo de “IntersectionObserver para efeitos acionados pela rolagem” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “IntersectionObserver para efeitos acionados pela rolagem”?

Use IntersectionObserver dentro de useEffect para acionar animações, carregamento tardio e rolagem infinita. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “IntersectionObserver para efeitos acionados pela rolagem”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. API da área de transferência: copiar e colar no React
  2. API de geolocalização em componentes React
  3. API de notificações e gerenciamento de permissões
  4. IntersectionObserver para efeitos acionados pela rolagem
← Voltar para React Academy