文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Vue3.x+Element Plus如何实现分页器组件

2023-07-05 05:48

关注

这篇文章主要介绍“Vue3.x+Element Plus如何实现分页器组件”,在日常操作中,相信很多人在Vue3.x+Element Plus如何实现分页器组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3.x+Element Plus如何实现分页器组件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

开发中难免会遇到宽度很窄的列表需要使用分页器的情况,这时若使用Element Plus组件的分页器会导致分页器内容超出展示的区域,而Element Plus组件中目前没有Acro Design那样小巧的分页器(Arco Design Vue)如下图所示,如果再引入一个新的UI组件库未免导致项目臃肿,所以基于Vue3.x和Element Plus封装了一个即拿即用的”简洁模式“分页器组件以便不时之需

Vue3.x+Element Plus如何实现分页器组件

分页器组件代码部分:

<!-- (简洁模式)分页器组件 --><template>  <div class="smallpagination">    <!-- 总数统计 -->    <span>{{ '共' + total + '条' }}</span>    <!-- 翻页 -->    <div class="smallpagination-pager">      <!-- 左翻页 -->      <el-icon @click="pageTurning('down')" :class="curPage <= 1 ? 'forbid-pageturning' : ''">        <ArrowLeft />      </el-icon>      <!-- 页码 -->      <el-input-number @change="handlePageChange" v-model="pageNum" :min="1" :max="pageTotal" :step-strictly="true"        :controls="false" />      <b>{{ '/ ' + pageTotal }}</b>      <!-- 右翻页 -->      <el-icon @click="pageTurning('up')" :class="curPage >= pageTotal ? 'forbid-pageturning' : ''">        <ArrowRight />      </el-icon>    </div>  </div></template><script setup>import { useAttrs, computed, ref } from 'vue';import {  ArrowLeft,  ArrowRight} from '@element-plus/icons-vue';// 接收父组件参数const attrs = useAttrs();// 父组件事件const em = defineEmits(['handlePageChange']);// 当前页const pageNum = ref(1);// 父组件传递-当前页码const curPage = computed(() => {  pageNum.value = attrs.curPage;  return attrs.curPage;});// 父组件传递-总数const total = computed(() => {  return attrs.total;});// 总页码数const pageTotal = computed(() => {  return attrs.total > 0 ? Math.ceil(attrs.total / attrs.pageSize) : 1;});const handlePageChange = (e) => {  if (pageTotal.value <= 1) {    return;  }  em('handlePageChange', e);};const pageTurning = (type) => {  // 向前翻页  if (type === 'up') {    if (curPage.value >= pageTotal.value || pageTotal.value <= 1) {      return;    }    em('handlePageChange', pageNum.value + 1);  }  // 向后翻页  else {    if (pageTotal.value <= 1 || curPage.value <= 1) {      return;    }    em('handlePageChange', pageNum.value - 1);  }};</script><style lang="less" scoped>.smallpagination {  width: auto;  height: 100%;  display: flex;  align-items: center;  >span {    margin-right: 11px;    font-size: 14px;    font-weight: 400;    color: #4E5969;    line-height: 21px;  }  .smallpagination-pager {    display: flex;    align-items: center;    .el-icon {      width: 30px;      height: 30px;      font-size: 14px;      color: #4E5969;      cursor: pointer;      &:hover {        background: rgb(247, 248, 250);        color: #0082ff;      }    }    .forbid-pageturning {      opacity: 0.4;      cursor: not-allowed;      &:active {        color: #4E5969;        background: rgb(255, 255, 255);      }    }    >b {      margin: 0 5px;      font-size: 14px;      font-weight: 400;      color: #4E5969;    }  }}</style><style lang="less">.smallpagination {  .smallpagination-pager {    .el-input-number {      width: 40px;      margin-left: 5px;      span {        display: none;      }      .el-input__wrapper {        padding: 0;        height: 30px;        font-size: 14px;        box-sizing: border-box;        background: #f2f3f5;        box-shadow: none !important;      }    }  }}</style>

使用简洁模式分页器组件代码如下:

<template>    <div class="xxx-list">    ...        <div class="list-bottom-common-page">          <SmallPagination :total="total" :curPage="curPage" :pageSize="pageSize" @handlePageChange="handleCurrentChange">          </SmallPagination>        </div>    </div></template><script setup>import SmallPagination from '@/components/xxx/SmallPagination.vue';import { ref } from 'vue';// 当前页const curPage = ref(1);// 每页条数const pageSize = ref(20);// 列表总数const total = ref(0);const handleCurrentChange = (val) => {  curPage.value = val;  ...};</script>

最终效果如下:

Vue3.x+Element Plus如何实现分页器组件

到此,关于“Vue3.x+Element Plus如何实现分页器组件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯