【发布时间】:2019-10-11 12:58:44
【问题描述】:
我正在尝试使用 React/Hooks 和 Intersection Observer API 跟踪元素可见性。但是,我不知道如何使用“useEffect”设置观察。有谁知道我该怎么做?我的解决方案不起作用...
function MainProvider({ children }) {
const [targetToObserve, setTargetToObserve] = useState([]);
window.addEventListener("load", () => {
const findTarget = document.querySelector("#thirdItem");
setTargetToObserve([findTarget]);
});
useEffect(() => {
const observer = new IntersectionObserver(
([entry]) => {
if (entry.intersectionRatio === 0.1) {
console.log("It works!");
}
},
{
root: null,
rootMargin: "0px",
threshold: 0.1
}
);
if (targetToObserve.current) {
observer.observe(targetToObserve.current);
}
}, []);
return (
<main>
<div className="Section-item" id="firstItem"></div>
<div className="Section-item" id="secondItem"></div>
<div className="Section-item" id="thirdItem"></div>
</main>
);
}
【问题讨论】:
-
你可以参考这个,它也是一个利用IntersectionObserver的钩子:github.com/jackyef/use-intersect/blob/master/src/index.js
标签: javascript reactjs react-hooks intersection-observer