react
CHAPTER 25 / 34
읽기 약 2분
FUNCTION
React로 페이지네이션 구현
핵심 개념
useState로 현재 페이지를 관리하고 slice()로 데이터를 분할합니다. 총 페이지 수를 계산하고 이전/다음 버튼으로 이동합니다. 페이지 번호 배열을 map()으로 렌더링합니다. 페이지네이션 로직을 지우며 데이터 분할이 어떻게 사라지는지 확인하십시오.
코드 분석
const { useState } = React;
const ALL = Array.from({length:20}, (_,i) => ({id:i+1, name:`UNIT-${String(i+1).padStart(3,'0')}`, threat: Math.floor(Math.random()*5)+6}));
const PER_PAGE = 5;
function Pagination() {
const [page, setPage] = useState(1);
const total = Math.ceil(ALL.length / PER_PAGE);
const data = ALL.slice((page-1)*PER_PAGE, page*PER_PAGE);
return (
<div>
{data.map(u => <div key={u.id} style={{color:'#888', fontSize:'12px', marginBottom:'4px', padding:'4px 0', borderBottom:'1px solid #1a1a1a'}}>[{u.name}] 위협도: {u.threat}</div>)}
<div style={{display:'flex', gap:'4px', marginTop:'12px', alignItems:'center'}}>
<button onClick={() => setPage(p => Math.max(1,p-1))} disabled={page===1} style={{background:'#333', color:page===1?'#333':'#e8e8e8', border:'none', padding:'4px 8px', cursor:'pointer', fontFamily:'monospace', fontSize:'10px'}}>PREV</button>
{Array.from({length:total},(_,i)=>i+1).map(p => <button key={p} onClick={()=>setPage(p)} style={{background:p===page?'#10b981':'#1a1a1a', color:p===page?'#080808':'#888', border:'none', padding:'4px 8px', cursor:'pointer', fontFamily:'monospace', fontSize:'10px'}}>{p}</button>)}
<button onClick={() => setPage(p => Math.min(total,p+1))} disabled={page===total} style={{background:'#333', color:page===total?'#333':'#e8e8e8', border:'none', padding:'4px 8px', cursor:'pointer', fontFamily:'monospace', fontSize:'10px'}}>NEXT</button>
</div>
</div>
);
}
ReactDOM.createRoot(document.getElementById('root')).render(<Pagination />);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.전체 데이터를 한 페이지에 나열하면 스크롤이 끝없이 길어지고, 원하는 항목을 찾기 어렵습니다
2.총 항목 수에서 페이지당 개수를 나눠 총 페이지를 계산하고, slice()로 현재 페이지 데이터만 추출합니다
3.다음 챕터에서 화면 위에 떠 있는 독립 UI인 모달 컴포넌트를 구현합니다
공유하기
진행도 25 / 34