React 후크로 요소가 보이는지 확인
8190 단어 tutorialbeginnersreactjavascript
Intersection Observer API를 사용하면 요소와 다른 요소의 교차점을 감지할 수 있습니다. 우리의 경우 React 요소와 브라우저 뷰포트 사이의 가로채기를 관찰할 것입니다.
필요한 곳에 이 코드를 재사용하기 위해 이를 위한 사용자 지정 후크를 만들 것입니다.
사용자 정의 후크에서 요소의 교차 상태를 저장하기 위해
useState
를 사용할 것입니다.export function useIsVisible() {
const [isIntersecting, setIntersecting] = useState(false);
return isIntersecting;
}
후크에는 관찰하려는 React 요소에 대한 참조가 필요합니다.
ref
소품을 사용하여 요소를 후크에 전달합니다.export function useIsVisible(ref) {
const [isIntersecting, setIntersecting] = useState(false);
return isIntersecting;
}
마지막으로
IntersectionObserver
의 인스턴스를 만들고 요소를 관찰해야 합니다. IntersectionObserver
생성자는 요소가 뷰포트와 교차할 때 호출되는 첫 번째 인수로 콜백 함수를 허용합니다.useEffect
후크를 사용하여 리렌더링 시 새 관찰자를 생성하지 않도록 할 것입니다.export function useIsVisible(ref) {
const [isIntersecting, setIntersecting] = useState(false);
useEffect(() => {
const observer = new IntersectionObserver(([entry]) =>
setIntersecting(entry.isIntersecting)
);
observer.observe(ref.current);
}, [ref]);
return isIntersecting;
}
성능을 향상시키기 위해 IntersectionObserver.disconnect()을 호출하여 구성 요소가 마운트 해제되거나 새 요소가 후크에 전달될 때 변경 사항 감시를 중지합니다.
export function useIsVisible(ref) {
const [isIntersecting, setIntersecting] = useState(false);
useEffect(() => {
const observer = new IntersectionObserver(([entry]) =>
setIntersecting(entry.isIntersecting)
);
observer.observe(ref.current);
return () => {
observer.disconnect();
};
}, [ref]);
return isIntersecting;
}
후크를 사용할 준비가 되었습니다. 이를 사용하려면 React 구성 요소에서 호출하고 표시 여부를 확인하려는 요소에 대한 참조를 전달하기만 하면 됩니다.
export function MyComponent() {
const ref = useRef();
const isVisible = useIsVisible(ref);
return (
<div ref={ref}>
<p>{isVisible ? "Visible" : "Not visible"}</p>
</div>
);
}
my website에서 이 후크의 실제 사용 예를 볼 수 있습니다. 사용자가 페이지 하단으로 스크롤한 다음 블로그 게시물의 댓글을 로드하는지 감지하기 위해 후크를 사용하고 있습니다. 구성요소here의 소스 코드를 볼 수 있습니다. 블로그 게시물을 입력하고 페이지 하단으로 스크롤하여 실제로 작동하는지 확인하십시오.
참조
Reference
이 문제에 관하여(React 후크로 요소가 보이는지 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jmalvarez/check-if-an-element-is-visible-with-react-hooks-27h8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)