화면이 페이지 하단에 도달했을 때, 콘텐츠가 끊기지 않고 계속 로드되는 사용자 경험(UX) 방식.
페이지를 새로고침하거나 추가적인 페이지이동 없이 스크롤을 통해 끝없이 새로운 콘텐츠를 볼 수 있습니다.
"더보기"버튼 사용
React-Intersection-Observer는 React 애플리케이션에서 특정 요소가 사용자의 Viewport(화면) 내에 들어오는지 여부를 감지하는 데 유용한 라이브러리입니다.
이 라이브러리는 브라우저의 기본 API인 Intersection Observer API를 기반으로 하여 React 컴포넌트에서 쉽게 사용할 수 있도록 설계되었습니다.
// npm
npm install react-intersection-observer
// yarn
yarn add react-intersection-observer
import { useInView } from 'react-intersection-observer';
const [ref, inView] = useInView({
/* 옵션 */
});
useInView는 React 컴포넌트에서 특정 DOM 요소의 가시성(화면에 보이는지 여부)을 감지하기 위해 사용되는 Hook입니다.
이 Hook을 통해 특정 요소가 사용자의 화면(뷰포트)에 들어왔는지 여부를 쉽게 파악할 수 있습니다.
ref : React의 ref 객체로, 감지하려는 DOM 요소에 할당해야 합니다.
inView : boolean 값으로, 감시 중인 요소가 화면에 보일 때 true, 화면에서 벗어날 때 false가 됩니다.
threshold : 요소의 어느 부분이 뷰포트에 들어왔을 때 inView가 true로 설정될지를 결정합니다. 0에서 1 사이의 값을 설정할 수 있으며, 예를 들어 0.5로 설정하면 요소의 50%가 화면에 들어왔을 때 inView가 true가 됩니다.
triggerOnce : 이 옵션을 true로 설정하면, 요소가 한 번 화면에 나타난 후 감지를 중지합니다. 기본값은 false입니다.
delay : 감지에 딜레이를 추가할 수 있습니다. 이는 요소가 화면에 잠깐 나타났다가 사라지는 경우를 필터링하는 데 유용합니다.
import React, { useEffect } from "react";
import { useInView } from "react-intersection-observer";
const Component = () => {
const { ref, inView } = useInView({
// 옵션설정
threshold: 1,
});
useEffect(() => {
// 가시성 감지
if (inView) {
console.log("요소 감지");
}
}, [inView]);
return <div ref={ref}>감시 요소</div>;
};
export default Component;