vue3.2结合element-plus实现一个全局分页组件

2023-10-26

  • 最近开始学习vue3.0的api语法,通使用vue3.0+element-plus搭建一个模板,把常用的组件封装一下。常用的分页组件,通过封装之后,粘贴复制,开箱即用
  • 首先安装vue3.2版本和element-plus

分页组件

<!--
 * @Author: 小周
 * @Date: 2022-03-09 17:09:58
 * @LastEditors: 小周
 * @LastEditTime: 2022-03-10 15:48:54
 * @Description: 全局分页组件
-->
<template>
  <div :class="{ hidden: props.hidden }" class="pagination-container">
    <el-pagination
      :background="props.background"
      v-model:current-page="currentPage"
      v-model:page-size="pageSize"
      :layout="props.layout"
      :page-sizes="props.pageSizes"
      :total="props.total"
      v-bind="$attrs"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
  </div>
</template>
<script setup>
import { defineProps, computed, defineEmits } from 'vue'

const props = defineProps({
  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
  }
})
const emit = defineEmits(['pagination', 'update:page', 'update:limit'])

const currentPage = computed({
  get() {
    return props.page
  },
  set(val) {
    emit('update:page', val)
  }
})

const pageSize = computed({
  get() {
    return props.limit
  },
  set(val) {
    emit('update:limit', val)
  }
})

const handleSizeChange = (val) => {
  emit('pagination', { page: currentPage, limt: val })
}
const handleCurrentChange = (val) => {
  emit('pagination', { page: val, limt: pageSize })
}
</script>

在main.js全局注册引入
import { createApp } from "vue";
import App from "./App.vue";
const app = createApp(App)

import Pagination from  './components/pagination/index.vue'
// 全局组件
app.component('Pagination',Pagination)

在其他组件调用使用

const total = ref(0)
const page = reactive({
  pageNum: 1,
  pageSize: 10
})
<Pagination
      v-show="total > 0"
      :total="total"
      v-model:page="page.pageNum"
      v-model:limit="page.pageSize"
      @pagination="getList"
    />
const getList = () => {
	列表数据接口请求
}
  • 以上代码就是分页组件的封装使用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3.2结合element-plus实现一个全局分页组件 的相关文章

随机推荐

  • 呕心沥血!!总结2021前端必备面试题

    面试题 1 用递归算法实现 数组长度为5且元素的随机数在2 32间不重复 递归就是函数在内部自己调自己 1 这是一道大题目 把考点拆成了4个小项 需要候选人用递归算法实现 a 生成一个长度为5的空数组arr b 生成一个 2 32 之间的随
  • HTTP 特殊字段讲解, 断点续传讲解

    1 怎么判断http服务器是否支持断点续传 在服务器的响应中查找是否含有字段 Accept Ranges bytes 2 if match 服务端有个ETag 实体标记 的字段 与特定资源关联的确定值 当资源更新后Etag也会随之更新 所以
  • SQLMap使用教程:从入门到入狱详细指南

    项目地址 GitHub sqlmapproject sqlmap Automatic SQL injection and database takeover tool SQLMap支持市面上常见的数据库 支持MySQL Oracle Pos
  • 网络营销中的博客营销有什么价值?对于博客营销我们应该注意哪些问题?

    博客营销有什么价值 应该注意什么 博客营销的正向效应作为一种现代 新兴的互联网营销手段 博客营销具有着传统营销方式所不可比拟的价值 主要体现在其正向的外部性方面 第一 由于网络资源的共享性和交互性 博客营销有利于企业全面降低营销费用和经营成
  • 最全防雷器电路及保护电路解析

    一 交流电源防雷器 一 单相并联式防雷器 电路一 最简单的电路 说明 1 优点 电路简单 采用复合对称电路 共模 差模全保护 L N 可以随便接 缺点 压敏电阻RV1 短路失效后易引起火灾 最好在每个压敏电阻上串联一个工频保险丝以防压敏电阻
  • 虚拟linux系统首次登入,第一次在虚拟机启动我们的Linux系统

    在上一篇中 我们学习了如何在本地环境搭建自己的Linux学习环境 从今天开始 正式进入我们的Linux学习之旅 今天我们尝试第一次启动Linux系统 为保证虚拟机的流畅运行 建议将分辨率设置为 800x600 1 第一次启动Linux之后
  • SSD HDD RAM ROM NAND NOR Flash 等存储介质概念整理

    原文地址 http xyzhongly blog 163 com blog static 2820488820101022302695 fromdm fromSearch isFromSearchEngine yes 寄存器 寄存器是中央处
  • C# 发展史

    C 开发的进化史 今天开始呢 我会跟大家一起学习C 我会由浅入深从基础来教大家 给大家推荐一本个人认为最为适合C 入门的书 C 本质论 这本书写的确实不错 如果有兴趣的话可以买来看一看 在期刊期间我也会发一些关于有趣的小案例 努力让大家学到
  • 区块链应用的开发

    经过前面两篇文章 适合小白 区块链之我用可视化的方式部署Webase 区块链之我用可视化Webase开发智能合约 的洗礼 相信大家都对区块链这块多少有点了解了 在本章节小编将带大家演示一下区块链应用的开发 首先需要导出刚才编译部署的智能合约
  • 毕设(一):正则化极限学习机(RELM)、在线学习的极限学习机(OS-ELM)、带遗忘机制的在线学习极限学习机(FOS-ELM)

    前言 终于要毕业了 毕业设计也做完了 我的毕设是 极限学习机和强化学习在单一资产交易中的应用 本质上用以极限学习机为值函数逼近器的一类强化学习算法去对一个资产进行交易 既然毕设也做完了 大学生涯也要结束了 那在去工作之前将毕设的东西好好总结
  • 线性回归(Linear Regression)

    线性回归 Linear Regression 一 假设函数 h x
  • Linux 强行终止

    kill 9 pid pid是进程号 9 代表的是数字 INT 2 这个就是你在bash下面用Ctrl C 来结束一个程序时 bash会向进程发送这个信号 默认的 进程收到这个程序会结束 你可以用 kill INT pid 来发这个信号 Q
  • ORA-28547 连接服务器失败

    1 找到Oracle安装路径 找到Oracle安装路径 app product 11 2 0 dbhome 1 NETWORK ADMIN listener ora 2 在listener ora文件中找到 PROGRAM extproc
  • OpenAI使用条款、使用策略和支持的地区汇总:必读指南,避免OpenAI API被封禁

    最近 一些群友反馈他们的OpenAI API被限制 其中包括试用金用户以及绑定了信用卡的用户 当他们调用API时 会收到以下报错信息 Your access was terminated due to violation of our po
  • 第一章:认识Scratch 第一课 什么是编程,什么是计算机语言?

    程序员的高薪已经成为一个公开的秘密 北上广的一个普通的刚毕业的程序员 怎么说也要万元的起薪 工作几年之后 说起来月薪都是几万 那些高级的资深程序员甚至于达到了年薪百万的待遇 程序员的工作就是编程 那么到底什么是编程呢 关注公众号 少儿编程S
  • python3.6安装包下载_下载 - CPython v3.8.5 官方安装包,离线安装程序,绿色便携版

    CPython v3 8 5 官方安装包 for Digitser 基于 C 语言的 Python 实现 系统 Microsoft Windows Vista 7 8 10 x86 amd64 CPython2 7 原定于 2020 年 0
  • android cmd命令行删除文件夹,文件

    android cmd命令行删除文件夹 文件 adb root adb remount adb shell su cd system sd data 进入系统内指定文件夹 ls 列表显示当前文件夹内容 rm r xxx 删除名字为xxx的文
  • Angular Tracy 小笔记 数据绑定,指令

    数据绑定 数据绑定的本质 就是我们的通讯操作 左边的业务逻辑 ts 想传递数据给模板显示 html 可以通过 插件表达式 data 属性绑定 property data 插值表达式 data 变量调用 html 里写 p tracyName
  • hyper-v克隆win10虚拟机后无法联网的解决方案

    克隆的虚拟机mac地址是不变的 所以要修改mac地址才行 现在有个更简单的办法 就是直接删除网络适配器 然后重新添加一个网络适配器即可 第一步 先删除原来的网卡 第二步 添加新的网卡 然后确定保存 立即生效
  • vue3.2结合element-plus实现一个全局分页组件

    最近开始学习vue3 0的api语法 通使用vue3 0 element plus搭建一个模板 把常用的组件封装一下 常用的分页组件 通过封装之后 粘贴复制 开箱即用 首先安装vue3 2版本和element plus 分页组件