import React, { useEffect, useRef } from "react"; import ReactDOM from "react-dom"; import "./styles.css"; // Custom hook function useLazyImageObserver(target) { useEffect(() => { if (!target.current) { return; } let observer = new window.IntersectionObserver(entries => { entries.forEach(entry => { if (entry.isIntersecting) { const lazyImage = entry.target; lazyImage.src = lazyImage.dataset.src; observer.unobserve(lazyImage); } }); }); observer.observe(target.current); return () => { if (observer) { observer.disconnect(); observer = null; } }; }, [target]); } // Component function App() { const target = useRef(null); useLazyImageObserver(target); return (
); } const rootElement = document.getElementById("root"); ReactDOM.render(, rootElement);