我正在使用一个功能来动画元素时进入视口,但我想改变它,使它只会做一次...我/不知道如何/在哪里编辑来完成这一点...任何建议?
function useIsInViewport(ref) {
const [isIntersecting, setIsIntersecting] = useState(false);
const observer = useMemo(
() =>
new IntersectionObserver(([entry]) =>
setIsIntersecting(entry.isIntersecting),
),
[],
);
useEffect(() => {
observer.observe(ref.current);
return () => {
observer.disconnect();
};
}, [ref, observer]);
return isIntersecting;
}
在第页中,我使用const进行设置:
const ref1 = useRef(null);
const isInViewport1 = useIsInViewport(ref1);
然后在元素上设置一个类:
${isInViewport1 && "fadeInDown"}
1条答案
按热度按时间ttp71kqs1#
你需要在第一次迭代后调用
observer.unobserve(entry.target)
。在你的特定情况下,如下所示: