Aujourd'hui, nous allons explorer comment utiliser l'API d'observateur d'intersection dans React avec quelques exemples.
La documentation Web de Mozilla décrit l'API de l'observateur d'intersection comme :
permet au code d'enregistrer une fonction de rappel qui s'exécute chaque fois qu'un élément qu'il souhaite surveiller entre ou quitte un autre élément (ou la fenêtre d'affichage), ou lorsque la valeur par laquelle les deux se croisent change d'un montant demandé. Ainsi, les sites n'ont plus besoin de faire quoi que ce soit sur le thread principal pour observer ce type d'intersection d'éléments, et le navigateur est libre d'optimiser la gestion des intersections comme bon lui semble.
En bref, cela nous permet de détecter quand un certain élément est visible dans la fenêtre, cela ne se produit que lorsque l'élément atteint le rapport d'intersection souhaité.
Comme vous pouvez le voir, si vous faites défiler la page vers le bas, le taux d'intersection augmentera jusqu'à atteindre la limite projetée et à ce moment-là, la fonction qui exécute un rappel est déclenchée.
const observer = new IntersectionObserver(callbackFunction, options) observer.observer(elementToObserver)
L'objet constructeur observateur d'intersection a besoin de deux arguments :
C'est tout, nous sommes prêts à voir de l'action, mais d'abord, nous devons savoir ce que signifie chaque option, l'argument options est un objet avec les valeurs suivantes :
const options = { root: null, rootMargin: "0px", threshold: 1 }
Nous allons maintenant voir une implémentation de l'API d'observateur d'intersection dans React.
const observer = new IntersectionObserver(callbackFunction, options) observer.observer(elementToObserver)
const options = { root: null, rootMargin: "0px", threshold: 1 }
N'oubliez pas qu'il ne s'agit que d'une implémentation de base et qu'il existe plusieurs façons de procéder.
Nous allons maintenant implémenter le même code que précédemment, mais en séparant toute la logique dans un nu hook appelé useElementOnScreen.
const containerRef = useRef(null) const [isVisible, setIsVisible] = useState(false) const callbackFunction = (entries) => { const [entry] = entries setIsVisible(entry.isIntersecting) } const options = { root: null, rootMargin: "0px", threshold: 1.0 } useEffect(() => { const observer = new IntersectionObserver(callbackFunction, options) if (containerRef.current) observer.observe(containerRef.current) return () => { if (containerRef.current) observer.unobserve(containerRef.current) } }, [containerRef, options]) return ( <div className="app"> <div className="isVisible">{isVisible ? "IN VIEWPORT" : "NOT IN VIEWPORT"}</div> <div className="section"></div> <div className="box" ref={containerRef}>Observe me</div> </div> )
<div className="box" ref={containerRef}>Observe me</div>
1- Importez le hook nouvellement créé dans notre composant.
2 - Initialisez-le avec l'objet options.
3 - C'est ainsi qu'on termine.
Félicitations, nous avons utilisé avec succès l'API d'observateur d'intersection et avons même créé un hook pour celle-ci !
Intersection Observer utilisant React, écrit à l'origine par des producthackers
Merci d’avoir lu cet article. J'espère pouvoir vous fournir des informations utiles. Si tel est le cas, je serais très heureux si vous recommandiez cet article et cliquiez sur le bouton ♥ pour que davantage de personnes puissent le voir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!