基于vue3封装一个分页组件

本文旨在介绍如何基于Vue3封装一个可复用的分页组件。通过理解分页的本质——分批次查询数据,详细讲解了动态页码计算、页码切换功能的实现,以及如何抽取组件选项和传递最新页码到父组件。最后展示了如何在实际项目中使用这个分页组件。
摘要由CSDN通过智能技术生成

目的:封装一个统一的分页组件,方便复用。

分页的本质:分批次查询数据(基于页码page和每页条数pagesize),后端接收到分页参数后,会基于这些参数查询数据库,然后基于数据库进行分页:基于SQL语句(select * from user limit n, m)
在这里插入图片描述
落的代码:

<template>
  <div class="xtx-pagination">
    <a @click='changePage(false)' href="javascript:;" :class="{disabled: currentPage===1}">上一页</a>
    <span v-if='currentPage > 3'>...</span>
    <a @click='changePage(item)' href="javascript:;" :class='{active: currentPage===item}' v-for='item in list' :key='item'>{
   {
   item}}</a>
    <span v-if='currentPage < pages - 2'>...</span>
    <a @click='changePage(true)' href="javascript:;" :class='{disabled: currentPage===pages}'>下一页</a
好的,下面是一个简单的示例代码,演示如何封装一个基于 Vue 3 的分页组件: ```vue <template> <div class="pagination"> <button @click="prevPage" :disabled="currentPage === 1">Previous</button> <span>{{ currentPage }}</span> <button @click="nextPage" :disabled="currentPage === totalPages">Next</button> </div> </template> <script> export default { name: 'Pagination', props: { totalItems: { type: Number, required: true }, itemsPerPage: { type: Number, default: 10 } }, data() { return { currentPage: 1 }; }, computed: { totalPages() { return Math.ceil(this.totalItems / this.itemsPerPage); } }, methods: { prevPage() { if (this.currentPage > 1) { this.currentPage--; } }, nextPage() { if (this.currentPage < this.totalPages) { this.currentPage++; } } } }; </script> <style scoped> .pagination { display: flex; justify-content: center; align-items: center; } button { margin: 0 5px; } </style> ``` 这个示例中,我们创建了一个名为 `Pagination` 的组件,它接受两个 props:`totalItems`(总项数)和 `itemsPerPage`(每页显示的项数,默认为 10)。组件内部维护了一个 `currentPage` 的响应式数据,用于跟踪当前页码。 在模板中,我们使用了两个按钮来实现上一页和下一页的功能,并通过计算属性 `totalPages` 来计算总页数。在方法中,我们定义了 `prevPage` 和 `nextPage` 分别用于处理上一页和下一页的点击事件,并更新 `currentPage` 的值。 这是一个简单的分页组件示例,你可以根据需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值