OPEN HYPER STEP
← 목록으로 (React)
REACT · 21 / 34
react
CHAPTER 21 / 34
읽기 약 2
FUNCTION

React로 무한 스크롤 구현


핵심 개념

IntersectionObserver와 useRef/useEffect를 조합해 무한 스크롤을 구현합니다. 스크롤 끝에 도달하면 새 데이터를 로드합니다. useState로 데이터와 로딩 상태를 관리합니다. Observer를 지우며 무한 스크롤이 어떻게 멈추는지 확인하십시오.

코드 분석
REACT📋 코드 (36줄)






const { useState, useEffect, useRef } = React;

  function InfiniteList() {
    const [items, setItems] = useState(Array.from({length:5}, (_,i) => `UNIT-${i+1}` ));
    const [loading, setLoading] = useState(false);
    const loaderRef = useRef(null);

    useEffect(() => {
      const observer = new IntersectionObserver(entries => {
        if (entries[0].isIntersecting && !loading) {
          setLoading(true);
          setTimeout(() => {
            setItems(prev => [...prev, ...Array.from({length:3}, (_,i) => `UNIT-${prev.length+i+1}`)]);
            setLoading(false);
          }, 800);
        }
      });
      if (loaderRef.current) observer.observe(loaderRef.current);
      return () => observer.disconnect();
    }, [loading]);

    return (
      <div style={{height:'200px', overflowY:'auto', border:'1px solid #1a1a1a', padding:'8px'}}>
        {items.map(item => <div key={item} style={{color:'#888', padding:'6px 0', borderBottom:'1px solid #1a1a1a', fontSize:'12px'}}>▶ {item}</div>)}
        <div ref={loaderRef} style={{color:'#333', textAlign:'center', padding:'8px', fontSize:'11px'}}>{loading ? 'LOADING...' : 'SCROLL DOWN'}</div>
      </div>
    );
  }

  ReactDOM.createRoot(document.getElementById('root')).render(<InfiniteList />);

AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

이 React '무한 스크롤' 컴포넌트에서
불필요한 리렌더링·메모리 누수·의존성 배열 누락을 찾고
최적화 코드로 리팩토링해줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

'무한 스크롤'를 사용한 실전 컴포넌트를
TypeScript + Tailwind 포함 완성 코드로 만들어줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

이 React '무한 스크롤' 사용 패턴 전체를 분석하고
번들 크기·렌더링 횟수·Core Web Vitals 개선 방안을
우선순위로 알려줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

React '무한 스크롤' vs 다른 프레임워크(Vue/Svelte/Solid)의
동일 기능 구현 방식을 솔직하게 비교하고
2026년 트렌드를 알려줘.

⭐ 이것만 기억하세요
React로 무한 스크롤 구현 이 3가지만 확실히 잡으세요
1.페이지를 한 번에 전부 로딩하면 초기 로딩이 느리고, 수천 개 DOM 노드가 생겨 스크롤 성능이 떨어집니다
2.IntersectionObserver로 하단 감지 → API로 다음 페이지 요청 → 기존 목록에 concat하는 3단계가 핵심 패턴입니다
3.다음 챕터에서 마우스로 요소를 끌어 재배치하는 드래그 앤 드롭을 구현합니다


공유하기
진행도 21 / 34