• Pagination 分页
    • 何时使用
    • 代码演示
      • 基本
      • 更多
      • 改变
      • 自定义下拉选项
      • 跳转
      • 迷你
      • 简洁
      • 受控
      • 总数
      • 上一步和下一步
  • API
    • 事件

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

    跳转

    快速跳转到某一页。

    <template>
      <a-pagination showQuickJumper :defaultCurrent="2" :total="500" @change="onChange" />
    </template>
    <script>
      export default {
        methods: {
          onChange(pageNumber) {
            console.log('Page: ', pageNumber);
          },
        },
      };
    </script>
    

    Pagination 分页 - 图6

    迷你

    迷你版本。

    <template>
      <div id="components-pagination-demo-mini">
        <a-pagination size="small" :total="50" />
        <a-pagination size="small" :total="50" showSizeChanger showQuickJumper />
        <a-pagination size="small" :total="50" :showTotal="total => `Total ${total} items`" />
      </div>
    </template>
    <style scoped>
      #components-pagination-demo-mini .ant-pagination:not(:last-child) {
        margin-bottom: 24px;
      }
    </style>
    

    Pagination 分页 - 图7

    简洁

    简单的翻页。

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

    Pagination 分页 - 图8

    受控

    受控制的页码。

    <template>
      <a-pagination @change="onChange" :current="current" :total="50" />
    </template>
    <script>
      export default {
        data() {
          return {
            current: 3,
          };
        },
        methods: {
          onChange(current) {
            this.current = current;
          },
        },
      };
    </script>
    

    Pagination 分页 - 图9

    总数

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

    <template>
      <div>
        <a-pagination
          :total="85"
          :showTotal="total => `Total ${total} items`"
          :pageSize="20"
          :defaultCurrent="1"
        />
        <br />
        <a-pagination
          :total="85"
          :showTotal="(total, range) => `${range[0]}-${range[1]} of ${total} items`"
          :pageSize="20"
          :defaultCurrent="1"
        />
      </div>
    </template>
    

    Pagination 分页 - 图10

    上一步和下一步

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

    <template>
      <a-pagination :total="500" :itemRender="itemRender" />
    </template>
    <script>
      export default {
        methods: {
          itemRender(current, type, originalElement) {
            if (type === 'prev') {
              return <a>Previous</a>;
            } else if (type === 'next') {
              return <a>Next</a>;
            }
            return originalElement;
          },
        },
      };
    </script>
    

    API

    <a-pagination @change="onChange" :total="50" />
    
    参数说明类型默认值
    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)