Pagination

Pagination (페이지네이션)

한 페이지에 표시할 데이터가 너무 많으면 페이지네이션을 사용해요.

출처: 문서

본문

기본 사용법 (Basic usage)

표시하고 싶은 페이지네이션 요소들을 콤마로 구분해 layout으로 설정해요. 페이지네이션 요소는 다음과 같아요: prev (이전 페이지로 이동하는 버튼), next (다음 페이지로 이동하는 버튼), pager (페이지 목록), jumper (이동 입력), total (전체 항목 수), sizes (페이지 크기를 정하는 select), 그리고 -> (이 기호 뒤의 모든 요소는 오른쪽으로 당겨져요).

.example-pagination-block + .example-pagination-block {
  margin-top: 10px;
}
.example-pagination-block .example-demonstration {
  margin-bottom: 16px;
}

페이지네이터 수 (Number of pagers)

기본적으로 Pagination은 7페이지가 넘으면 추가 페이지 버튼을 접어요. pager-count 속성으로 설정할 수 있어요.

배경색 버튼 (Buttons with background color)

background 속성을 설정하면 버튼에 배경색이 생겨요.

작은 Pagination (Small Pagination)

공간이 제한된 경우 작은 페이지네이션을 사용해요. size를 설정해서 크기를 바꿔요. 여기 작은 예제가 있어요.

한 페이지일 때 숨김 (Hide pagination when there is only one page)

페이지가 하나뿐일 때 hide-on-single-page 속성을 설정해서 페이지네이션을 숨겨요.

import { ref } from 'vue'

const value = ref(false)

더 많은 요소 (More elements)

시나리오에 따라 더 많은 모듈을 추가해요. 이 예제는 완전한 사용 사례예요. size-change와 current-change 이벤트를 사용해서 페이지 크기 변경과 현재 페이지 변경을 처리해요. page-sizes는 정수 배열을 받는데, 각각은 sizes select 옵션의 서로 다른 페이지 크기를 나타내요. 예를 들어 [100, 200, 300, 400]은 select에 100, 200, 300, 400개 항목이라는 네 옵션이 있음을 뜻해요.

import { ref } from 'vue'

import type { ComponentSize } from 'element-plus'

const currentPage1 = ref(5)
const currentPage2 = ref(5)
const currentPage3 = ref(5)
const currentPage4 = ref(4)
const pageSize2 = ref(100)
const pageSize3 = ref(100)
const pageSize4 = ref(100)
const size = ref('default')
const background = ref(false)
const disabled = ref(false)

const handleSizeChange = (val: number) => {
  console.log(`${val} items per page`)
}
const handleCurrentChange = (val: number) => {
  console.log(`current page: ${val}`)
}

.demo-pagination-block + .demo-pagination-block {
  margin-top: 10px;
}
.demo-pagination-block .demonstration {
  margin-bottom: 16px;
}

API

Attributes

Name Description Type Default
size 2.7.6 페이지네이션 크기 enum 'default'
background 버튼에 배경색이 있는지 여부 boolean false
page-size / v-model:page-size 각 페이지의 항목 수 number —
default-page-size page size의 기본 초기 값, 설정하지 않으면 10으로 설정한 것과 같아요 number —
total 전체 항목 수 number —
page-count 전체 페이지 수. total이나 page-count 중 하나를 설정하면 페이지가 표시돼요. page-sizes가 필요하다면 total이 필수예요 number —
pager-count 페이지네이터 수. 전체 페이지 수가 이 값을 초과하면 Pagination이 접혀요 number 7
current-page / v-model:current-page 현재 페이지 번호 number —
default-current-page current-page의 기본 초기 값, 설정하지 않으면 1로 설정한 것과 같아요 number —
layout Pagination의 레이아웃, 요소는 콤마로 구분 string prev, pager, next, jumper, ->, total
page-sizes 페이지당 항목 수 옵션 array [10, 20, 30, 40, 50, 100]
append-size-to 2.8.4 size 드롭다운이 붙는 요소 string —
popper-class 페이지 크기 Select 드롭다운의 커스텀 클래스 이름 string ''
popper-style 2.11.5 페이지 크기 Select 드롭다운의 커스텀 스타일 string / object —
prev-text prev 버튼 텍스트 string ''
prev-icon prev 버튼 아이콘, prev-text보다 우선순위가 낮아요 string / Component ArrowLeft
next-text next 버튼 텍스트 string ''
next-icon next 버튼 아이콘, next-text보다 우선순위가 낮아요 string / Component ArrowRight
disabled Pagination 비활성화 여부 boolean false
teleported 2.3.13 Pagination select 드롭다운을 body로 텔레포트할지 여부 boolean true
hide-on-single-page 페이지가 하나뿐일 때 숨길지 여부 boolean false
small deprecated 작은 페이지네이션 사용 여부 boolean false

WARNING 일부 deprecated 사용법을 감지해요. 페이지네이션이 나타나지 않거나 예상대로 동작하지 않으면 다음 규칙을 확인하세요:

  • total과 page-count 중 하나를 반드시 정의해야 해요. 그래야 전체 페이지 수를 결정할 수 있어요. 둘 다 정의하면 page-count가 우선해요.
  • current-page를 정의했다면 @update:current-page도 정의해서 current-page 변경을 들어야 해요. 그렇지 않으면 페이지네이션이 동작하지 않아요.
  • page-size를 정의하고 페이지 크기 선택기가 표시된다면(sizes가 layout에 포함) @update:page-size도 정의해서 page-size 변경을 들어야 해요. 그렇지 않으면 페이지 크기 변경이 동작하지 않아요.

Events

Name Description Type
size-change page-size가 변경될 때 트리거 Function
current-change current-page가 변경될 때 트리거 Function
change 2.4.4 current-page 또는 page-size가 변경될 때 트리거 Function
prev-click prev 버튼이 클릭되고 현재 페이지가 변경될 때 트리거 Function
next-click next 버튼이 클릭되고 현재 페이지가 변경될 때 트리거 Function

WARNING 위 이벤트는 권장하지 않지만(호환성 때문에 여전히 지원돼요), v-model로 양방향 데이터 바인딩을 사용하는 편이 더 좋아요.

Slots

Name Description
default 커스텀 내용. 사용하려면 layout에 slot을 선언해야 해요

더 알아보기 (Learn more)