当前位置: 首页 > news >正文

基于vue+element 分页的封装

目录标题

  • 项目场景:
  • 认识分页
    • 1.current-page
    • 2.page-sizes
    • 3.page-size
    • 4.layout
    • 5.total
    • 6.size-change
    • 7.current-change
  • 封装分页:
    • 创建paging:
    • 进行封装
  • 页面中使用:
    • 引入
    • 效果

项目场景:

分页也是我们在实际应用当中非常常见的存在,其实分页本身在element中做的就挺好的了,但是使用确实非常的多,所以还是有必要封装一下,主要是为了减少代码的冗余,以及提升开发的效率和降低后续维护的成本。


认识分页

这是一段普通分页的示例

<template><div class="block"><span class="demonstration">完整功能</span><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[100, 200, 300, 400]":page-size="100"layout="total, sizes, prev, pager, next, jumper":total="400"></el-pagination></div>
</template><script>export default {methods: {handleSizeChange(val) {console.log(`每页 ${val}`);},handleCurrentChange(val) {console.log(`当前页: ${val}`);}},data() {return {currentPage: 4};}}
</script>

效果是这样的

在这里插入图片描述
在这当中用到了我们常用的七个字段:

1.current-page

:current-page="currentPage"

代表的是当前在第几页,并且可以输入进行跳转任意存在的页数,主要效果如下:
在这里插入图片描述

2.page-sizes

:page-sizes="[100, 200, 300, 400]"

用于设置分页每页显示多少条,主要效果如下:
在这里插入图片描述

3.page-size

:page-size="100"

设置默认显示多少条(这里默认为100条),主要效果如下:
在这里插入图片描述

4.layout

layout="total, sizes, prev, pager, next, jumper"

用于设置组件布局,子组件名用逗号分隔,效果如下:
在这里插入图片描述
字段说明:

  • total : 总页数
  • sizes:一页显示多少条
  • prev:上一页
  • pager:点击页数跳转(只允许跳转上下两页以及起止页)
  • next:下一页
  • jumper:输入跳转任意存在页

5.total

:total="400"

展示总页数,效果如下。
在这里插入图片描述

6.size-change

@size-change="handleSizeChange"

触发事件,当page-size改变时触发,也就是当页面改变时触发。
在这里插入图片描述

7.current-change

@current-change="handleCurrentChange"

触发事件,currentPage 改变时会触发,也就是修改每页显示多少条时触发。


封装分页:

弄清楚每个字段的意思后便可以进行封装了。
主要思路是,封装的组件通过父组件将currentPage,total,sizes,pager,jumper传入,并且在触发@size-change,@current-change事件时,将事件信息传给父组件。

创建paging:

在这里插入图片描述

进行封装

<!-- author:Wh1T3ZzTcomponent:分页time:2023/07/25
-->
<template><div class="paging"><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="pageSizes":page-size="pageSize":layout="layout":total="total"></el-pagination></div>
</template><script>
export default {data(){return{}},props:{currentPage:{default(){return [];}},pageSizes:{default(){return [];}},pageSize:{default(){return [];}},layout:{default(){return [];}},total:{default(){return [];}}},methods:{handleSizeChange(val) {this.$emit('handleSizeChange',val)console.log(`传给父组件:每页 ${val}`);},handleCurrentChange(val) {this.$emit('handleCurrentChange',val)console.log(`传给父组件:当前页: ${val}`);},}
}
</script><style></style>

封装完成!


页面中使用:

引入

<template><div><Paging :currentPage="1" :pageSizes="[5,10,20,50,100]" :pageSize="10" layout="total, sizes, prev, pager, next, jumper" :total="10" @handleSizeChange="PagingSizeChange" @handleCurrentChange="PagingCurrentChange"></Paging></div>
</template><script>
import Paging from '@/components/paging/index.vue'
export default {methods:{PagingSizeChange(val){console.log(`父组件接收到每页: ${val}`);},PagingCurrentChange(val){console.log(`父组件接收到当前页: ${val}`);},}
}</script>

效果

在这里插入图片描述

在这里插入图片描述
成功!

http://www.lryc.cn/news/96134.html

相关文章:

  • 面试题模拟
  • Linux6.13 Docker LNMP项目搭建
  • 数据包协议栈处理
  • html刷新图片
  • PHP反序列化漏洞之魔术方法
  • 2023年的深度学习入门指南(20) - LLaMA 2模型解析
  • 智能安全配电装置应用场景有哪些?
  • Rust vs Go:常用语法对比(四)
  • c++ 派生类 文本查询程序再探
  • 17. 电话号码的字母组合
  • Redis 基础知识和核心概念解析:理解 Redis 的键值操作和过期策略
  • Jenkins中sh函数的用法
  • Android 之 Canvas API 详解 (Part 3) Matrix 和 drawBitmapMesh
  • 基于Ubuntu 22.04 编译chip-tool工具
  • opencv-17 脸部打码及解码
  • JVM分享
  • Apache Dubbo CVE-2021-36162 挖掘过程
  • 开源框架面试题目整理
  • Mr. Cappuccino的第52杯咖啡——Mybatis环境搭建与使用
  • 了解Unity编辑器之组件篇Tilemap(五)
  • Linux字符设备操作函数
  • 吉林大学计算机软件考研经验贴
  • 2023-07-26力扣每日一题-区间翻转线段树
  • Java设计模式之 -- 桥接模式
  • 【node.js】02-path模块
  • 攻防世界-Reverse-re1
  • AES加密的基本常识和封装类
  • elasticsearch使用记录
  • UNI-APP_横屏切换竖屏出现样式混乱问题
  • 数据可视化(3)