Pagination 分页

采用分页的形式分隔长列表,每次只加载一个页面。

何时使用

  • 当加载/渲染所有数据将花费很多时间时;
  • 可切换页码浏览数据。

代码演示

Pagination分页 - 图1

基本

基础分页。

  1. <template>
  2. <a-pagination v-model="current" :total="50" />
  3. </template>
  4. <script>
  5. export default {
  6. data() {
  7. return {
  8. current: 2,
  9. }
  10. }
  11. }
  12. </script>

Pagination分页 - 图2

更多

更多分页。

  1. <template>
  2. <a-pagination :defaultCurrent="6" :total="500" />
  3. </template>

Pagination分页 - 图3

改变

改变每页显示条目数。

  1. <template>
  2. <div>
  3. <a-pagination showSizeChanger @showSizeChange="onShowSizeChange" :defaultCurrent="3" :total="500" />
  4. <br/>
  5. <a-pagination showSizeChanger :pageSize.sync="pageSize" @showSizeChange="onShowSizeChange" :total="500" v-model="current"/>
  6. </div>
  7. </template>
  8. <script>
  9. export default {
  10. data(){
  11. return {
  12. pageSize: 20,
  13. current:4,
  14. }
  15. },
  16. watch:{
  17. pageSize(val) {
  18. console.log('pageSize',val);
  19. },
  20. current(val) {
  21. console.log('current',val);
  22. }
  23. },
  24. methods: {
  25. onShowSizeChange(current, pageSize) {
  26. console.log(current, pageSize);
  27. }
  28. }
  29. }
  30. </script>

Pagination分页 - 图4

自定义下拉选项

自定义下拉选项,例如添加全部选项

  1. <template>
  2. <a-pagination
  3. :pageSizeOptions="pageSizeOptions"
  4. :total="total"
  5. showSizeChanger
  6. :pageSize="pageSize"
  7. v-model="current"
  8. @showSizeChange="onShowSizeChange"
  9. >
  10. <template slot='buildOptionText' slot-scope='props'>
  11. <span v-if="props.value!=='50'">{{props.value}}条/页</span>
  12. <span v-if="props.value==='50'">全部</span>
  13. </template>
  14. </a-pagination>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. pageSizeOptions: ['10', '20', '30', '40', '50'],
  21. current: 1,
  22. pageSize: 10,
  23. total: 50,
  24. }
  25. },
  26. methods: {
  27. onShowSizeChange(current, pageSize) {
  28. this.pageSize = pageSize
  29. },
  30. }
  31. }
  32. </script>

Pagination分页 - 图5

跳转

快速跳转到某一页。

  1. <template>
  2. <a-pagination showQuickJumper :defaultCurrent="2" :total="500" @change="onChange" />
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. onChange(pageNumber) {
  8. console.log('Page: ', pageNumber);
  9. }
  10. }
  11. }
  12. </script>

Pagination分页 - 图6

迷你

迷你版本。

  1. <template>
  2. <div id="components-pagination-demo-mini">
  3. <a-pagination size="small" :total="50" />
  4. <a-pagination size="small" :total="50" showSizeChanger showQuickJumper />
  5. <a-pagination size="small" :total="50" :showTotal="total => `Total ${total} items`" />
  6. </div>
  7. </template>
  8. <style scoped>
  9. #components-pagination-demo-mini .ant-pagination:not(:last-child) {
  10. margin-bottom: 24px;
  11. }
  12. </style>

Pagination分页 - 图7

简洁

简单的翻页。

  1. <template>
  2. <a-pagination simple :defaultCurrent="2" :total="50" />
  3. </template>

Pagination分页 - 图8

受控

受控制的页码。

  1. <template>
  2. <a-pagination @change="onChange" :current="current" :total="50" />
  3. </template>
  4. <script>
  5. export default {
  6. data() {
  7. return {
  8. current: 3
  9. }
  10. },
  11. methods: {
  12. onChange(current) {
  13. this.current = current
  14. }
  15. }
  16. }
  17. </script>

Pagination分页 - 图9

总数

通过设置 showTotal 展示总共有多少数据。

  1. <template>
  2. <div>
  3. <a-pagination
  4. :total="85"
  5. :showTotal="total => `Total ${total} items`"
  6. :pageSize="20"
  7. :defaultCurrent="1"
  8. />
  9. <br />
  10. <a-pagination
  11. :total="85"
  12. :showTotal="(total, range) => `${range[0]}-${range[1]} of ${total} items`"
  13. :pageSize="20"
  14. :defaultCurrent="1"
  15. />
  16. </div>
  17. </template>

Pagination分页 - 图10

上一步和下一步

修改上一步和下一步为文字链接。

  1. <template>
  2. <a-pagination :total="500" :itemRender="itemRender" />
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. itemRender(current, type, originalElement) {
  8. if (type === 'prev') {
  9. return <a>Previous</a>;
  10. } else if (type === 'next') {
  11. return <a>Next</a>;
  12. }
  13. return originalElement;
  14. }
  15. }
  16. }
  17. </script>

API

参数说明类型默认值
current(v-model)当前页数number-
defaultCurrent默认的当前页数number1
defaultPageSize默认的每页条数number10
hideOnSinglePage只有一页时是否隐藏分页器booleanfalse
itemRender用于自定义页码的结构,可用于优化 SEO(page, type: 'page' | 'prev' | 'next', originalElement) => vNode-
pageSize(.sync)每页条数number-
pageSizeOptions指定每页可以显示多少条string[]['10', '20', '30', '40']
showQuickJumper是否可以快速跳转至某页booleanfalse
showSizeChanger是否可以改变 pageSizebooleanfalse
showTotal用于显示数据总量和当前数据顺序Function(total, range)-
simple当添加该属性时,显示为简单分页boolean-
size当为「small」时,是小尺寸分页string""
total数据总数number0

事件

事件名称说明回调参数
change页码改变的回调,参数是改变后的页码及每页条数Function(page, pageSize)
showSizeChangepageSize 变化的回调Function(current, size)