vue3 基于element plus对el-pagination进行二次封装

news/2024/10/22 11:13:12/

vue3 基于element plus对el-pagination进行二次封装

  • 1、前言
  • 2、在components文件夹中新建pagination.vue文件
  • 3、在组件内使用分页

1、前言

在vue3项目中,如果每个列表页都敲一遍分页方法,显然是不合理的,那么,下面我将基于element plus对el-pagination进行二次封装,使用vue3语法糖格式,废话不多说,开干。

2、在components文件夹中新建pagination.vue文件

<template><div class="pagination"><el-pagination background :layout="layout" :pager-count="pagerCount" :page-sizes="pageSizes" :page-size="pageSize":total="pageTotal" v-model:currentPage="currentPages" @size-change="sizeChange" @current-change="current"@prev-click="prev" @next-click="next"></el-pagination></div>
</template><script setup>
import { ref, reactive, onMounted } from "vue"
const props = defineProps({pageTotal: {type: Number,default: 0, //总页数},pagerCount: {type: Number,default: 5, //如果页数很多大概展示的页码},layout: {type: String,default: "total,sizes, prev, pager, next, jumper, ->, slot", //分页组件会展示的功能项},pageSizes: {type: Array,default: () => {return [10, 20, 50, 100] //指定分页展示条数},},currentPage: {type: Number,default: 1, //指定跳转到多少页},pageSize: {type: Number,default: 10, //每页展示的条数,根据自己实际,且会带入请求},pageNum: {type: Number,default: 1, //第几页数据,根据自己实际,且会带入请求},
})let currentPages = ref(props.currentPage)
let pageData = reactive({pageSize: props.pageSize,pageNum: props.pageNum,
})const emit = defineEmits(["pageFunc"])//选择每页显示数量 Change page size
const sizeChange = (val) => {pageData.pageSize = valemit("pageFunc", pageData)
}
//选择某一页
const current = (val) => {pageData.pageNum = currentPages.valueemit("pageFunc", pageData)
}
//上一页
const prev = () => {pageData.pageNum = pageData.pageNum - 1emit("pageFunc", pageData)
}
//下一页
const next = () => {pageData.pageNum = pageData.pageNum + 1emit("pageFunc", pageData)
}
</script><style scoped lang="less">
.pagination {width: 100%;background: #fff;padding: 5px 0;text-align: center;margin: 0 auto;display: flex;flex-direction: column;align-items: center;
}
</style>

3、在组件内使用分页

<template><pagination v-show="totalRows > 0" :pageNum="queryParams.pageNum" :pageSize="queryParams.pageSize" :pageTotal="totalRows" @pageFunc="pageFunc" />
</template>
<script setup>
import { reactive, ref } from 'vue'
// 引入分页组件
import Pagination from '@/components/pagination.vue'
// 查询参数
const queryParams = reactive({pageNum: 1,pageSize: 10,organId: '',projectName: '',projectStatus: '',projectLeader: '',
})
// 项目总条数
const totalRows = ref(0)
// 分页回调
const pageFunc = (data) => {queryParams.pageSize = data.pageSizequeryParams.pageNum = data.pageNum// 触发获取项目数据函数getProjectList()  
}
</script>

http://www.ppmy.cn/news/1047064.html

相关文章

解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

张量分解算法的Julia实现:从基础原理到实际应用

一、张量分解算法简介 张量分解是多维数据结构中的关键操作。在很多应用场景中&#xff0c;例如信号处理、图像处理和机器学习等&#xff0c;我们常常需要处理和存储多维数据。对于这种数据&#xff0c;张量分解提供了一个有效的工具来识别其中的潜在结构和模式。 张量是一个…

vmware17 开启虚拟化

前言 有时候需要在虚拟机上安装虚拟机&#xff0c;方便做一些测试 解决办法 在vmware17 上对虚拟机开启虚拟化即可 下图中都勾上即可 设置完成之后就可以在虚拟机上安装虚拟机

成形滤波器、CIC补偿滤波器 matlab设计与FPGA实现

成形滤波插5 Matlab Rs 500e3; %符号速率 beta 0.2; %滚降系数(0,1) (实际带宽-理想带宽)/理想带宽 W (1beta)*Rs/2 %所需带宽 span 36; %滤波阶数 sps 5; %单个符号采样数% 滤波器阶数 span*sps% 滤波器系数数 span*sps 1 mfir_i5 rcosdesign(beta,span,sps); fv…

LeetCode 周赛上分之旅 #40 结合特征压缩的数位 DP 问题

⭐️ 本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架&#xff0c;你的思考越抽象&#xff0c;它能覆盖的问题域就越广&#xff0c;理解难度…

arduino软硬件介绍

arduino 北京创客读书会&#xff0c;Beginning Arduino读书会授课代码 光 声音 通信 显示器 电机舵机 单总线 spi pwm脉冲 以太网 物联网 arduino IOT物联网编程 Arduino 大师 Programming Arduino: Getting Started with Sketches 示例 arduino_course_es 课程 课件 CC…

app专项测试(网络测试流程)

目录 一、网络测试的一般流程 二、背景介绍 三、弱网功能测试 四、弱网UI测试 五、无网状态测试 六、网络切换测试 七、用户体验关注 八、响应时间 九、异常测试 一、网络测试的一般流程 step1&#xff1a;首先要考虑网络正常的情况 ① 各个模块的功能正常可用 ②…

【汇编语言】关于“段”的总结

文章目录 各种段三种段具体案例截图数据段、栈段、代码段同时使用不同段地址数据段、栈段、代码段同时使用一个段地址![在这里插入图片描述](https://img-blog.csdnimg.cn/45c299950ad949e3a90b7ed012b3a9ee.png) 各种段 1、基础 物理地址 段地址 x 16 偏移地址 2、做法 编…