基于vue+element 分页的封装

这篇具有很好参考价值的文章主要介绍了基于vue+element 分页的封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

分页也是我们在实际应用当中非常常见的存在,其实分页本身在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>

效果是这样的

基于vue+element 分页的封装,VUE,vue.js,前端,javascript
在这当中用到了我们常用的七个字段:

1.current-page

:current-page="currentPage"

代表的是当前在第几页,并且可以输入进行跳转任意存在的页数,主要效果如下:
基于vue+element 分页的封装,VUE,vue.js,前端,javascript

2.page-sizes

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

用于设置分页每页显示多少条,主要效果如下:
基于vue+element 分页的封装,VUE,vue.js,前端,javascript

3.page-size

:page-size="100"

设置默认显示多少条(这里默认为100条),主要效果如下:
基于vue+element 分页的封装,VUE,vue.js,前端,javascript

4.layout

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

用于设置组件布局,子组件名用逗号分隔,效果如下:
基于vue+element 分页的封装,VUE,vue.js,前端,javascript
字段说明:

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

5.total

:total="400"

展示总页数,效果如下。
基于vue+element 分页的封装,VUE,vue.js,前端,javascript

6.size-change

@size-change="handleSizeChange"

触发事件,当page-size改变时触发,也就是当页面改变时触发。
基于vue+element 分页的封装,VUE,vue.js,前端,javascript

7.current-change

@current-change="handleCurrentChange"

触发事件,currentPage 改变时会触发,也就是修改每页显示多少条时触发。
基于vue+element 分页的封装,VUE,vue.js,前端,javascript


封装分页:

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

创建paging:

基于vue+element 分页的封装,VUE,vue.js,前端,javascript

进行封装

<!-- 
	author:Wh1T3ZzT
	component:分页
	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>


效果

基于vue+element 分页的封装,VUE,vue.js,前端,javascript

基于vue+element 分页的封装,VUE,vue.js,前端,javascript
成功!文章来源地址https://www.toymoban.com/news/detail-608570.html

到了这里,关于基于vue+element 分页的封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • vue搭配element-ui前端实现表格分页

    如果不从后台请求数据,那么就需要在前端手动管理数据。可以使用以下步骤实现该功能: 在 Vue 组件的 data 中定义一个数组来存放所有数据(不分页)。 在 mounted 钩子函数中,手动获取数据并存放到上一步定义的数组中。 在模板中使用 element-ui 的表格组件来展示数据,同

    2024年02月11日
    浏览(15)
  • element ui 表格组件与分页组件的二次封装
【扩展】vue中的render函数

    element ui 表格组件与分页组件的二次封装 【扩展】vue中的render函数

    目录 效果图  组件封装  parseTime函数 debounce 函数 render通用渲染模版 页面使用 【扩展】vue 函数式组件 函数式组件特点: 函数式组件的优点: 【扩展】vue中的render函数 一、初步认识render函数 二、为什么使用render函数 三、render函数的解析 【扩展】添加操作栏显示权限 结构

    2024年02月09日
    浏览(26)
  • 前端vue3+element plus 分页table排序功能实现

    我有如下所示的一个table,数据data是一个computed计算属性,一般情况下筛选使用element的sortable属性就可以了,可查看Element - The world\\\'s most popular Vue UI framework 但我的 table 是一个分页的 table ,当我使用 sortable 时发现,它只是对当前页的数据进行排序,但这并不是我需要的,我的

    2024年02月14日
    浏览(16)
  • Vue.js 中使用 Element UI 实现异步加载分页列表

    Vue.js 中使用 Element UI 实现异步加载分页列表

    在前端开发中,我们常常需要展示大量数据,并提供分页浏览的功能。本篇博客将介绍如何使用 Vue.js 和 Element UI 组件库创建一个简单的异步加载分页列表。 Vue.js Element UI JavaScript 我们将创建一个包含表格和分页组件的 Vue 单文件组件。以下是组件的基本结构: 引入 Element U

    2024年02月04日
    浏览(12)
  • Vue + Element UI 前端篇(七):功能组件封装

    Vue + Element UI 前端篇(七):功能组件封装

    为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度。 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航、头部和主内容三个组件。 Home.vue HeadBar.vue MenuBar.vue Main.vue 国际化语言切换也被封装成为了组

    2024年02月09日
    浏览(9)
  • Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页

    Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页

    Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页:         当table的数据量比较大的时候,一个屏幕展示不出全部的数据,这个时候就需要分页显示。而多数情况下都是做的后端分页,就是将分页参数和查询条件一并传到后端,后端将当前页要

    2024年01月20日
    浏览(17)
  • 【JaveWeb教程】(8)Web前端基础:Vue组件库Element之Table表格组件和Pagination分页组件 详细示例介绍

    【JaveWeb教程】(8)Web前端基础:Vue组件库Element之Table表格组件和Pagination分页组件 详细示例介绍

    接下来我们来学习一下ElementUI的常用组件,对于组件的学习比较简单,我们只需要参考官方提供的代码,然后复制粘贴即可。本节主要学习Tbale表格组件和Pagination分页组件 Table 表格:用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。 接下来

    2024年02月02日
    浏览(14)
  • 基于vue+Element Table Popover 弹出框内置表格的封装

    基于vue+Element Table Popover 弹出框内置表格的封装

    在选择数据的时候需要在已选择的数据中对比选择,具体就是点击一个按钮,弹出一个小的弹出框,但不像对话框那样还需要增加一个遮罩层,更加的轻量化,但是需要查看的数据很多需要一个列表来展示,列表的话还需要一个筛选功能。 我的思路是增加复选框列,将选择的

    2024年02月07日
    浏览(13)
  • vue 基于element-plus el-button封装按钮组件

    封装组件的原则是:组件只是数据流通的一个管道,不要糅合太多的逻辑在里面,是一个纯组件,还要根据自己项目的业务场景做具体的处理。

    2024年02月10日
    浏览(15)
  • 前端歌谣-第伍拾陆课-vue2-element组件封装el-button-groups(续)

    前端歌谣-第伍拾陆课-vue2-element组件封装el-button-groups(续)

    我是歌谣 今天继续给大家带来el-button-groups(项目的讲解

    2024年02月03日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包