• 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 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)