JavaScript
intersection observer 를 이용해 infinite scroll 구현하기
GROWNFRESH
2021. 10. 28. 14:15
https://velog.io/@suyeonme/react-Infinite-Scroll-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0
[react] Infinite Scroll 구현하기
React에서 Infinite Scroll 구현하기(scroll event, intersectionObserver, useRef)
velog.io
intersection observer 개념
infiniter 구현하는 법 등 정리하기
범구님 예시
import 'intersection-observer';
import { RefObject, useCallback, useEffect, useRef } from 'react';
export function useIntersectionObserver<T extends HTMLElement>(
effect: IntersectionObserverCallback,
targetRef: RefObject<T | null>,
): void {
const observerRef = useRef<IntersectionObserver | null>(null);
const getObserver = useCallback(() => {
if (!observerRef.current) {
observerRef.current = new IntersectionObserver(effect);
}
return observerRef.current;
}, [effect]);
useEffect(() => {
const observer = getObserver();
const target = targetRef.current;
if (target) {
observer.observe(target);
}
return () => {
if (target) {
observer.unobserve(target);
}
};
}, [targetRef, getObserver]);
}