Pagination
Pagination 컴포넌트는 많은 데이터를 여러 페이지로 나누어 보여줄 때 사용합니다. 사용자는 페이지 번호를 클릭하여 원하는 페이지로 이동할 수 있으며, 처음/마지막 페이지로 이동하거나 이전/다음 페이지로 이동할 수 있습니다. 리스트, 테이블, 검색 결과 등에서 자주 활용됩니다.
인터랙티브 예제
아래 UI에서 다양한 속성을 직접 변경하여 Pagination 컴포넌트의 모습을 확인해보세요.
1 / 20
기본 사용법
import { Pagination } from '@ncds/ui-admin';
function App() {
const [currentPage, setCurrentPage] = useState(1);
const handlePageChange = (pageNum) => {
// pageChange logic
setCurrentPage(pageNum);
};
return <Pagination totalCount={100} currentPage={currentPage} onPageChange={handlePageChange} />;
}
1 / 20
Props
Prop | Type | Default | Description |
---|---|---|---|
totalCount | number | - | 전체 아이템 개수입니다. |
currentPage | number | - | 현재 페이지 번호입니다. |
itemCountPerPage | number | 10 | 한 페이지에 보여줄 아이템 개수입니다. |
pageCount | number | 10 | 한 번에 보여줄 페이지 번호의 개수입니다. |
onPageChange | (page: number) => void | - | 페이지가 변경될 때 호출되는 콜백 함수입니다.(react) |
className | string | - | 커스텀 스타일을 위한 className입니다. |
as | 'button' | 'a' | 'button' | 페이지네이션 버튼의 HTML 요소를 지정합니다. |
href | string | - | as="a"일 때 사용할 링크 주소입니다. |
breakpoint | 'pc' | 'mo' | 'pc' | 모바일, pc UI를 선택할 수 있습니다. |
상세 예제
전체 아이템 개수에 따른 페이지네이션
전체 아이템 개수(totalCount
)에 따라 페이지네이션의 모습이 달라집니다. itemCountPerPage
값이 10일 때, 아래와 같이 표시됩니다.
100개 아이템 (10페이지)
1 / 10
200개 아이템 (20페이지)
1 / 20
현재 페이지 표시
현재 페이지(currentPage
)에 따라 활성화된 페이지 번호가 강조됩니다. 또한 현재 페이지가 변경되면 페이지 그룹이 자동으로 업데이트됩니다.
현재 페이지: 1
1 / 10
현재 페이지: 10
10 / 11
페이지 그룹 크기 조절
pageCount
prop을 통해 한 번에 표시되는 페이지 번호의 개수를 조절할 수 있습니다. 기본값은 10입니다.
페이지 그룹 크기: 5
1 / 10
페이지 그룹 크기: 10 (기본값)
1 / 10
링크 형태로 사용하기
as
prop을 통해 페이지네이션의 버튼을 링크(<a>
태그)로 변경할 수 있습니다. href
prop과 함께 사용하면 각 페이지에 대한 URL을 지정할 수 있습니다.
링크 형태 (as="a")
1 / 10
기본 버튼 형태 (as="button")
1 / 10
반응형 디자인 조절
breakPoint
prop을 통해 컴포넌트의 UI를 변경할 수 있습니다. 'pc' 또는 'mo' 값을 사용할 수 있으며, 기본값은 'pc'입니다. 각 값에 따라 컴포넌트의 레이아웃과 스타일이 달라집니다.
PC UI (breakPoint="pc", 기본값)
1 / 20
MO UI (breakPoint="mo")
1 / 20
주의사항
totalCount
가 0이거나 1페이지 이하일 경우, 페이지네이션이 표시되지 않을 수 있습니다.onPageChange
콜백에서 페이지 상태를 반드시 업데이트해야 정상 동작합니다.- 페이지 번호는 1부터 시작합니다.
- 반응형 디자인이 적용되어 있어 모바일 환경에서는 화살표 아이콘이 자동으로 변경됩니다.
- 커스텀 스타일을 적용할 때는
className
prop을 활용하세요. totalPage (totalCount / itemCountPerPage)
가 pageCount보다 클 경우에만 페이지 점프 버튼이 노출 됩니다.