element-ui 切换分页条数,触发两次请求-bug记录, 分页组件封装

这篇具有很好参考价值的文章主要介绍了element-ui 切换分页条数,触发两次请求-bug记录, 分页组件封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

element-ui 切换分页条数,触发两次请求-bug记录, 分页组件封装

前言介绍:
以组件完整功能为例需要配置的参数为current-page、page-sizes、page-size、total:
current-page,文档所指为当前页数;显示当前数据所拥有页数
page-sizes,文档所指为每页显示个数选择器的选项设置;对当前页数据显示个数进行配置(以数组形式进行配置,例:[10, 20, 30, 40])
page-size,文档所指为每页显示条目个数,支持 .sync 修饰符;限制每页显示的条数
total,文档所指为总条目数,显示接口返回的数据总条目数
total不要与page-size 混淆,在没有指定current-page的情况下组件自动依据total(数据总条目数)进行分页(前提得指定page-size并且指定数量不能大于total),如果混淆会导致没有进行分页或者数据总条目数不准确
(以上为照搬大佬文案, 点击查看原文)

以下分页封装方法是个人对这位大佬使用的方法进行进一步修改, 使用前请结合自己项目的合理性进行参考

步骤:

1.先手动计算要跳转的最大页数
2.判断当前页是否大于最大页数, 如果是就返回最大页数
3.再设置一个状态值, 当state为false时, handleCurrentChange事件将直接return, 这样就不会出现调用两次接口的情况
结构代码

<template>
  <div :class="{'hidden':hidden}" class="pagination-container">
    <el-pagination
      :background="background"
      :current-page.sync="currentPage"
      :page-size.sync="pageSize"
      :layout="layout"
      :page-sizes="pageSizes"
      :total="total"
      v-bind="$attrs"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
  </div>
</template>

script代码

<script>
export default {
  name: 'Pagination',
  props: {
    total: {
      required: true,
      type: Number
    },
    page: {
      type: Number,
      default: 1
    },
    limit: {
      type: Number,
      default: 20
    },
    pageSizes: {
      type: Array,
      default() {
        return [10, 20, 30, 50]
      }
    },
    layout: {
      type: String,
      default: 'total, sizes, prev, pager, next, jumper'
    },
    background: {
      type: Boolean,
      default: true
    },
    autoScroll: {
      type: Boolean,
      default: true
    },
    hidden: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      state: true
    }
  },
  computed: {
    currentPage: {
      get() {
        return this.page
      },
      set(val) {
        this.$emit('update:page', val)
      }
    },
    pageSize: {
      get() {
        return this.limit
      },
      set(val) {
        this.$emit('update:limit', val)
      }
    }
  },
  methods: {
    handleSizeChange(val) {
      const pageMax = Math.ceil(this.total / val) // 先手动计算要跳转的最大页数
      if (this.page > pageMax) { // 判断当前页是否大于最大页数, 如果是就返回最大页数
        this.state = false // 再设置一个状态值, 当state为false时, handleCurrentChange事件将直接return, 这样就不会出现调用两次接口的情况
        this.$emit('pagination', { page: pageMax, limit: val })
      } else {
        this.$emit('pagination', { page: this.currentPage, limit: val })
      }
    },
    handleCurrentChange(val) {
      if (this.state === false) {
        this.state = true
        return
      }
      this.$emit('pagination', { page: val, limit: this.pageSize })
      }
    }
  }
}
</script>

<style scoped>
.pagination-container {
  background: #fff;
  padding: 15px 0 0 0;
}
.pagination-container.hidden {
  display: none;
}
</style>

代码参考来自这文章 element-ui 切换分页条数,会出现两次请求,文章来源地址https://www.toymoban.com/news/detail-474149.html

到了这里,关于element-ui 切换分页条数,触发两次请求-bug记录, 分页组件封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • element-ui图像组件、上传组件、分页组件

    el-image:保留了原生的img的属性 1、导航方向:通过mode属性设置 2、菜单项 示例: (1)使用elementUI的上传组件将图片上传到服务器并保存到数据库中 (2)在el-table控件中将上传的图片显示出来 实现过程: (1)给数据库中的数据表增加一列(image_url):保存图片在服务器中

    2024年02月07日
    浏览(5)
  • element-UI Pagination 分页 布局,自定义布局

    element-UI Pagination 分页 布局,自定义布局

    分页左右布局,自定义布局 elm 分页默认布局是 左对齐的 我们这节要实现的效果是这样 (主要是拆分 分页每个一项) 两端对齐用的比较多 或者这样 直接上代码 主要通过 loyout 属性 如果你想要图2上的布局如上代码 你想要左中右布局图三效果 你需要用三个 el-pagination 只需要指

    2024年02月16日
    浏览(4)
  • Vue使用Element-UI实现分页效果

    Vue使用Element-UI实现分页效果

    分页在展示数据列表的场景肯定是非常多的。 一般的项目开发中,数据量特别大,一般都是后端接口直接处理分页返回,前端直接调用即可。 但是前端也是可以不需要借助后端,自己也是可以处理分页的。今天我这个后端开发就站在前端的角度上,处理列表分页。 友情提示

    2024年02月02日
    浏览(8)
  • vue使用element-ui实现分页功能

    element-ui官网上有分页实现的功能,简单方便又好用,也有很多分页的样式,你可以根据需要去选择自己想要的样式。这里讲的是完整功能样式的一个分页实现。过程如下: 分页方法完成。

    2024年02月13日
    浏览(8)
  • vue搭配element-ui前端实现表格分页

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

    2024年02月11日
    浏览(9)
  • element-ui实现动态添加表单项并实现事件触发验证验证

    element-ui实现动态添加表单项并实现事件触发验证验证

    需求分析:点击新增后新增一个月度活动详情,提交时可同时提交多个月度活动详情。点击某一个月度活动信息的删除后可删除对应月度活动信息 H5部分: 抽取H5部分的主要框架: js部分 页面中form数据对象声明 表单验证 完整demo 整体效果及功能: 删除某个月度活动:

    2024年02月03日
    浏览(11)
  • element-ui tab标签禁止切换

    给el-tabs标签设置style=“pointer-events: none;” 注意:每个el-tab-pane标签也要加上style=\\\"pointer-events: auto;\\\"否则各个页面的所有鼠标事件都会失效 HTML JS

    2024年02月11日
    浏览(7)
  • Element-ui tab栏的切换

    Element-ui tab栏的切换

    代码: 解析:使用el-tabs进行包裹,使用el-tab-pan来显示上面的可选栏。 对应的效果图:  基本的用法 具体可参考官网。

    2024年02月11日
    浏览(11)
  • 基于Element-ui 封装带分页的下拉选择器组件

    基于Element-ui 封装带分页的下拉选择器组件

    使用 Element-ui的 el-select组件时,如果下拉选项过多,一是查找选项困难,二是数据量超大(比如1w+)组件直接会卡死,所以考虑做一个带分页的下拉选择器(样式还可以再优化)

    2024年02月11日
    浏览(13)
  • vue element-ui分页插件 始终保持在页面底部样式

    vue element-ui分页插件 始终保持在页面底部样式

    最近在写前端页面的时候,有一个小需求就是保证分页插件一直保持在底部,表单数据增多的时候出现竖向的滚动条。 直接上代码 样式 效果展示

    2024年02月11日
    浏览(5)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包