Heute werden wir anhand einiger Beispiele untersuchen, wie die Schnittmengenbeobachter-API in React verwendet wird.
Die Mozilla-Webdokumentation beschreibt die Kreuzungsbeobachter-API wie folgt:
ermöglicht Code die Registrierung einer Rückruffunktion, die immer dann ausgeführt wird, wenn ein zu überwachendes Element ein anderes Element (oder das Ansichtsfenster) betritt oder verlässt oder wenn sich der Wert, um den sich die beiden überschneiden, um einen angeforderten Betrag ändert. Auf diese Weise müssen Websites nichts mehr im Hauptthread tun, um diese Art von Überschneidungen von Elementen zu beobachten, und der Browser kann die Überschneidungsverwaltung nach eigenem Ermessen optimieren.
Kurz gesagt ermöglicht es uns zu erkennen, wann ein bestimmtes Element im Ansichtsfenster sichtbar ist. Dies geschieht nur, wenn das Element das gewünschte Schnittverhältnis erfüllt.
Wie Sie sehen können, erhöht sich das Schnittverhältnis, wenn Sie auf der Seite nach unten scrollen, bis es den prognostizierten Grenzwert erreicht. In diesem Moment wird die Funktion ausgelöst, die einen Rückruf ausführt.
const observer = new IntersectionObserver(callbackFunction, options) observer.observer(elementToObserver)
Das Konstruktorobjekt des Kreuzungsbeobachters benötigt zwei Argumente:
Das ist alles, wir sind bereit, etwas zu sehen, aber zuerst müssen wir wissen, was jede Option bedeutet. Das Optionsargument ist ein Objekt mit den folgenden Werten:
const options = { root: null, rootMargin: "0px", threshold: 1 }
Jetzt sehen wir eine Implementierung der Kreuzungsbeobachter-API in React.
const observer = new IntersectionObserver(callbackFunction, options) observer.observer(elementToObserver)
const options = { root: null, rootMargin: "0px", threshold: 1 }
Denken Sie daran, dass dies nur eine grundlegende Implementierung ist und es mehrere Möglichkeiten gibt, dies zu tun.
Jetzt implementieren wir denselben Code wie zuvor, trennen jedoch die gesamte Logik in einem Nu-Hook namens 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- Importieren Sie den neu erstellten Hook in unsere Komponente.
2 – Initialisieren Sie es mit dem Optionsobjekt.
3 – So beenden wir es.
Herzlichen Glückwunsch, wir haben die Kreuzungsbeobachter-API erfolgreich verwendet und sogar einen Hook dafür erstellt!
Intersection Observer mit React, ursprünglich geschrieben von Produkthackern
Vielen Dank, dass Sie diesen Artikel gelesen haben. Ich hoffe, ich kann Ihnen einige nützliche Informationen liefern. Wenn ja, würde ich mich sehr freuen, wenn du diesen Beitrag weiterempfiehlst und auf den ♥-Button klickst, damit mehr Leute ihn sehen können.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Intersection Observer in React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!