Skip to content

Pagination 分页

在分页数据之间导航。

命令行安装

bash
npx @loongship-kit/ui add pagination

组件结构

角色组件职责使用条件
根组件Pagination计算页码并管理当前页数据分页必需
内容容器PaginationContent暴露并排列页码项目数据分页必需
页码与链接PaginationItemPaginationLink渲染页码按钮或链接按分页模式选用
导航组件PaginationPreviousPaginationNext切换到上一页或下一页按需
辅助组件PaginationEllipsis表示被省略的页码范围按需

数据分页

查看代码
vue
<template>
  <Pagination v-model:page="page" :items-per-page="10" :total="80" show-edges>
    <PaginationContent v-slot="{ items }">
      <PaginationPrevious />
      <template v-for="(item, index) in items" :key="index">
        <PaginationItem
          v-if="item.type === 'page'"
          :value="item.value"
          :is-active="item.value === page"
        />
        <PaginationEllipsis v-else />
      </template>
      <PaginationNext />
    </PaginationContent>
  </Pagination>
</template>

自定义按钮文本

查看代码
vue
<template>
  <Pagination :items-per-page="10" :total="30" :default-page="1">
    <PaginationContent v-slot="{ items }">
      <PaginationPrevious>上一页</PaginationPrevious>
      <template v-for="(item, index) in items" :key="index">
        <PaginationItem v-if="item.type === 'page'" :value="item.value" />
        <PaginationEllipsis v-else />
      </template>
      <PaginationNext>下一页</PaginationNext>
    </PaginationContent>
  </Pagination>
</template>

链接分页

查看代码
vue
<template>
  <Pagination :items-per-page="10" :total="30" :default-page="2">
    <PaginationContent>
      <PaginationItem><PaginationLink href="?page=1">1</PaginationLink></PaginationItem>
      <PaginationItem><PaginationLink href="?page=2" is-active>2</PaginationLink></PaginationItem>
      <PaginationItem><PaginationLink href="?page=3">3</PaginationLink></PaginationItem>
    </PaginationContent>
  </Pagination>
</template>

API

Pagination(主组件)

属性

属性类型默认值说明
v-model:pagenumber-当前页码
defaultPagenumber1非受控模式的初始页码
itemsPerPagenumber10每页条数
totalnumber0数据总条数
siblingCountnumber2当前页两侧显示的页码数量
showEdgesbooleanfalse是否始终显示首尾页
disabledbooleanfalse是否禁用
asstring | Component'nav'渲染元素
asChildbooleanfalse合并到唯一子元素
classClassValue-自定义类名

事件

事件参数说明
update:pagepage: number页码改变时触发

插槽

插槽参数说明
default{ page: number, pageCount: number }分页内容

子组件

PaginationContent — 页码项目容器

属性

属性类型默认值说明
asstring | Component'ul'渲染元素
asChildbooleanfalse合并到唯一子元素
classClassValue-自定义类名

插槽

插槽参数说明
default{ items: Array<{ type: 'page'; value: number } | { type: 'ellipsis' }> }渲染页码项目列表
PaginationItem — 数据分页页码项

属性

属性类型默认值说明
valuenumber-数据分页中的页码;省略时作为链接分页容器
isActivebooleanfalse是否使用当前页样式
classClassValue-外层 li 的类名

插槽

插槽参数说明
default覆盖页码文本;未设置 value 时放置 PaginationLink
PaginationLink — 链接分页内容

属性

属性类型默认值说明
hrefstring-链接地址
isActivebooleanfalse是否设置当前页样式和 aria-current="page"
classClassValue-自定义类名

插槽

插槽参数说明
default链接内容
PaginationPrevious / PaginationNext — 上一页与下一页

属性

属性类型默认值说明
asstring | Component'button'渲染元素
asChildbooleanfalse合并到唯一子元素
classClassValue-自定义类名

插槽

组件插槽参数说明
PaginationPreviousdefault上一页文本,默认 Previous
PaginationNextdefault下一页文本,默认 Next
PaginationEllipsis — 省略页码提示

属性

属性类型默认值说明
asstring | Component'div'渲染元素
asChildbooleanfalse合并到唯一子元素
classClassValue-自定义类名

省略号

组件固定显示省略号和供屏幕阅读器使用的 More pages 文本。