返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Element-UI之Pagination组件怎么用
  • 727
分享到

Element-UI之Pagination组件怎么用

2024-04-02 19:04:59 727人浏览 安东尼
摘要

这篇文章给大家分享的是有关Element-UI之Pagination组件怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先说结论:在改变pageSize时,若当前的curre

这篇文章给大家分享的是有关Element-UI之Pagination组件怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

先说结论:在改变pageSize时,若当前的currentPage超过了最大有效值,就会修改为最大有效值。

一般Pagination组件的声明如下:

<el-pagination 
 @size-change="handleSizeChange" 
 @current-change="handleCurrentChange" 
 :page-size="pageSize" 
 :current-page="currentPage"
 :total="total"
 :page-sizes="[10, 20, 50, 100, 200, 300, 400]" 
 layout="total, sizes, prev, pager, next, jumper">
</el-pagination>

数据都是异步获取的,所以会定义一个获取数据的方法:

getData() {
 const params = {
 pageSize: this.pageSize,
 currentPage: this.currentPage
 };

 get(params).then(res => {
 if (res.status === 0) {
 ...
 this.total = res.result.count;
 }
 });
}

一般我们会在pageSize或currentPage改变时,再次去获取新数据:

handleSizeChange(val) {
 this.pageSize = val;
 this.getData();
},
handleCurrentChange(val) {
 this.currentPage = val;
 this.getData();
}

以上都符合常理,看起来没什么问题!但是,来看以下这种特殊情况:

假设有473条数据,即total = 473

当前pageSize = 10, pageCount = Math.ceil(473 / 10) = 48, currentPage = 48

现在将pageSize = 200,则pageCount = Math.ceil(473 / 200) = 3

这时奇怪的事情就发生了,首先页面的表现为:先是无数据,然后过一会数据才加载。

打开控制台查看网络请求,发现获取了两次数据!

查看请求参数,第一次为:pageSize: 200, currentPage : 48

第二次为:pageSize: 200, currentPage: 3

这好像可以解释了,为什么请求了两次数据?因为pageSize与currentPage的改变都会触发事件去请求数据。

但是!pageSize是我们手动改变的,那currentPage呢?

查看整个组件内可能触发currentPage的行为,但并没有。

那只有一种可能,就是Element-UI库内部帮我们修改的!

秉着不求甚解的理念,去查看了Element-UI中Pagination组件的源码

其中currentPage在Pagination组件内叫 internalCurrentPage

watch: {
 internalCurrentPage: {
 immediate: true,
 handler(newVal, oldVal) {
 newVal = parseInt(newVal, 10);

 
 if (isNaN(newVal)) {
  newVal = oldVal || 1;
 } else {
  // 注意这里 
  newVal = this.getValidCurrentPage(newVal);
 }

 if (newVal !== undefined) {
  this.internalCurrentPage = newVal;
  if (oldVal !== newVal) {
  this.$emit('currentPage', newVal);
  }
 } else {
  this.$emit('currentPage', newVal);
 }
 }
 }
}

注意我注释标明的地方:

newVal = this.getValidCurrentPage(newVal)

方法名getValidCurrentPage,顾名思义 获取有效的当前页

以上两点足以证明,Element-UI中的Pagination组件会修改currentPage为一个有效值!

具体看看getValidCurrentPage方法的实现:

getValidCurrentPage(value) {
 value = parseInt(value, 10);
 
 const havePageCount = typeof this.internalPageCount === 'number';

 let resetValue;
 if (!havePageCount) {
 if (isNaN(value) || value < 1) resetValue = 1;
 } else {
 if (value < 1) {
  resetValue = 1;
 } else if (value > this.internalPageCount) {
  // 注意这里
  resetValue = this.internalPageCount;
 }
 }

 if (resetValue === undefined && isNaN(value)) {
 resetValue = 1;
 } else if (resetValue === 0) {
 resetValue = 1;
 }

 return resetValue === undefined ? value : resetValue;
 }

重点看这句代码:

else if (value > this.internalPageCount) {
 resetValue = this.internalPageCount;
}

这里就是我们遇到的特殊情况,在改变pageSize时,若当前的currentPage超过了最大有效值,就会修改为最大有效值!

其实Element-UI修改的说法并不正确,它只是向上派发了事件,最终修改值的是我们自己。

感谢各位的阅读!关于“Element-UI之Pagination组件怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Element-UI之Pagination组件怎么用

本文链接: https://lsjlt.com/news/77610.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Element-UI之Pagination组件怎么用
    这篇文章给大家分享的是有关Element-UI之Pagination组件怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先说结论:在改变pageSize时,若当前的curre...
    99+
    2024-04-02
  • Vue2.5 结合Element UI之Table和Pagination组件实现分页功能的示例分析
    这篇文章主要介绍Vue2.5 结合Element UI之Table和Pagination组件实现分页功能的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现思路Element...
    99+
    2024-04-02
  • element-ui的隐藏组件el-scrollbar怎么用
    这篇文章将为大家详细讲解有关element-ui的隐藏组件el-scrollbar怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。虽然在官方文档中没有给出这个组件,但...
    99+
    2024-04-02
  • 怎么使用element-ui设置table组件宽度为百分比
    本篇内容主要讲解“怎么使用element-ui设置table组件宽度为百分比”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用element-ui设置table组件宽度为百分比”吧!elem...
    99+
    2023-07-06
  • Vue基于Element-ui怎么实现表格弹窗组件
    本篇内容主要讲解“Vue基于Element-ui怎么实现表格弹窗组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue基于Element-ui怎么实现表格弹窗组件”吧!效果图使用方式acTab...
    99+
    2023-06-30
  • 详解element-ui组件el-autocomplete使用踩坑记录
    项目遇到一个比较麻烦的需求,保存用户填写的历史记录,项目使用的element-ui,自然就使用了el-autocomplete组件,然后就是各种踩坑,以下记录以下写代码过程中遇到的问...
    99+
    2024-04-02
  • Vue Element UI自定义描述列表组件
    本文实例为大家分享了Vue Element UI自定义描述列表组件的具体代码,供大家参考,具体内容如下 效果图 写在前面 写后台管理经常从列表点击查看详情,展示数据信息,Eleme...
    99+
    2024-04-02
  • vue+element-ui实现头部导航栏组件
    本文实例为大家分享了vue+element-ui实现头部导航栏组件具体代码,供大家参考,具体内容如下 话不多说,先上一张效果图: 这是一个头部导航栏,网站最常见的一个功能,鼠标点击...
    99+
    2024-04-02
  • element-ui中导航组件menu的属性:default-active有什么用
    本文小编为大家详细介绍“element-ui中导航组件menu的属性:default-active有什么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“element-ui中导航组件menu的属性:default-active有什么用”文...
    99+
    2023-06-30
  • VUE中element-ui如何实现一个复用Table组件
    小编给大家分享一下VUE中element-ui如何实现一个复用Table组件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!步骤一先来个基本的表格展示官例的tableDatatableDat...
    99+
    2024-04-02
  • element表格组件怎么使用
    这篇文章主要介绍“element表格组件怎么使用”,在日常操作中,相信很多人在element表格组件怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”element表格组件怎么使用”的疑惑有所帮助!接下来...
    99+
    2023-06-03
  • vue如何基于element-ui分页组件封装
    这篇文章主要为大家展示了“vue如何基于element-ui分页组件封装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何基于element-ui分页组件...
    99+
    2024-04-02
  • Vue基于Element-ui实现表格弹窗组件
    本文实例为大家分享了Vue基于Element-ui实现表格弹窗组件的具体代码,供大家参考,具体内容如下 效果图 使用方式 acTable1 () {   this.$modalTa...
    99+
    2024-04-02
  • Element-ui Layout布局(Row和Col组件)的实现
    目录基本说明以及用法 Row组件的分析render函数源码分析Col组件的分析组件分析响应式布局我们在实际开发中遇到一些布局的时候会用到Layout布局,这个布局只要配置一些参数就能...
    99+
    2024-04-02
  • vue使用Element-UI部分组件适配移动端问题
    目录前言组件适配1—Message 消息提示组件适配2—MessageBox 弹框组件适配3—Dialog 对话框结语前言 使用组件库现成的组件是...
    99+
    2023-03-19
    vue Element-UI组件 vue Element-UI适配移动端 Element-UI组件适配移动端
  • 使用element-ui设置table组件宽度(width)为百分比
    目录element-ui设置table组件宽度为百分比代码如下element-ui设置table组件width为百分比无效原理总结element-ui设置table组件宽度为百分比 ...
    99+
    2023-05-15
    element-ui设置table宽度 table组件宽度 table组件宽度为百分比
  • Element UI中v-infinite-scroll无限滚动组件使用详解
    目录一、v-infinite-scroll无限滚动组件使用详解二、组件无限加载原因及解决方式三、总结总结一、v-infinite-scroll无限滚动组件使用详解 1、v-infi...
    99+
    2023-02-08
    element ui 无限滚动组件 element表格无限滚动 elementui v-infinite-scroll
  • Vue怎么与element-ui整合
    这篇文章主要介绍“Vue怎么与element-ui整合”,在日常操作中,相信很多人在Vue怎么与element-ui整合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue怎么与element-ui整合”的疑...
    99+
    2023-06-29
  • element中ScrollBar滚动组件怎么用
    这篇文章将为大家详细讲解有关element中ScrollBar滚动组件怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。scrollbar组件根目录下包括index.j...
    99+
    2024-04-02
  • 基于element-UI input等组件宽度如何修改
    这篇“基于element-UI input等组件宽度如何修改”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于el...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作