#15封装vue3+el-table表格数据请求函数

目录

1、useTableData

2、util

3、使用


开箱即用,理解容易。

1、useTableData

import { reactive } from 'vue'
import { getType } from '@/utils/utils'

export const useTableData = (api) => {
  if (typeof api !== 'function' && getType(api) !== 'Promise') {
    throw new Error('请传入Promise类型的api请求')
  }

  // 分页器每页个数配置组
  const PAGE_SIZES = reactive([10, 20, 50])

  // 初始化数据
  const DEFAULT_TABLE_DATA = reactive({
    list: [],
    totalCount: 0,
    isLoading: false,
    currentPage: 1,
    pageSize: PAGE_SIZES[0]
  })

  // 数据表格
  const tableData = reactive({
    list: DEFAULT_TABLE_DATA.list,
    totalCount: DEFAULT_TABLE_DATA.totalCount,
    isLoading: DEFAULT_TABLE_DATA.isLoading
  })

  // 数据表格基本请求参数
  let tableParams = reactive({
    currentPage: DEFAULT_TABLE_DATA.currentPage,
    pageSize: DEFAULT_TABLE_DATA.pageSize
  })

  // 获取数据
  const fetchData = async () => {
    tableData.isLoading = true
    const res = await api(tableParams).catch(() => {
      tableData.isLoading = false
    })
    if (res) {
      console.log(api.toString() + '请求成功\n', res)
      tableData.isLoading = false
      tableData.list = res.list
      tableData.totalCount = res.totalCount
    } else {
      ElMessage.error('数据获取失败!')
    }
  }

  // 重置请求
  const reset = () => {
    tableData.list = DEFAULT_TABLE_DATA.list
    tableData.totalCount = DEFAULT_TABLE_DATA.totalCount
    tableData.isLoading = DEFAULT_TABLE_DATA.isLoading
    tableParams = {
      currentPage: DEFAULT_TABLE_DATA.currentPage,
      pageSize: DEFAULT_TABLE_DATA.pageSize
    }
    fetchData()
  }

  // 刷新
  const refresh = () => {
    fetchData()
  }

  // 设置查询参数
  const setParams = (params = {}) => {
    tableParams = { ...tableParams, ...params }
    fetchData()
  }

  return {
    PAGE_SIZES,
    tableData,
    tableParams,
    setParams,
    reset,
    refresh
  }
}

2、util

export const getType = (value) => {
let type = Object.prototype.toString.call(value)
  type = type.replace(/^\[object\s/, '')
  type = type.replace(/$/, '')
  return type
}

3、使用

const roleManagementTable =
useTableData(http.roleManagement.list)
<el-table
  :data="roleManagementTable.tableData.list"
  tooltip-effect="dark"
  :height="windowRect.clientHeight - 250"
  :row-style="{ height: '65px' }"
  @selection-change="onTableSelectionChange"
>

list即为一个axios请求;

然后将分页工具和分页参数进行绑定即可。

<el-pagination
@size-change="onSizeChange"
  @current-change="onCurrentChange"
  v-model:page-size="roleManagementTable.tableParams.pageSize"
  v-model:current-page="roleManagementTable.tableParams.currentPage"
  :page-sizes="roleManagementTable.PAGE_SIZES"
  :layout="`total,prev,pager,next,${device === 'mobile' ? '' : 'sizes'}`"
  :total="roleManagementTable.tableData.totalCount"
  :small="device === 'mobile'"
>
</el-pagination>

如果对你有帮助,点赞、收藏、关注是我更新的动力!

#14vue3生成表单并跳转到外部地址的方式-CSDN博客文章浏览阅读2.3k次,点赞74次,收藏13次。vue3生成表单并跳转到外部地址的方式https://blog.csdn.net/weixin_42718399/article/details/136538137?spm=1001.2014.3001.5502#13Maven打包生成MD5校验文件的两种方式_mvn 打war包,显示md5和大小-CSDN博客文章浏览阅读2.1k次,点赞59次,收藏17次。Maven打包生成MD5校验文件的两种方式_mvn 打war包,显示md5和大小https://blog.csdn.net/weixin_42718399/article/details/136375811?spm=1001.2014.3001.5502#12解决request中getReader()和getInputStream()只能调用一次的问题_servletrequest.getreader只允许调一次-CSDN博客文章浏览阅读2.1k次,点赞64次,收藏30次。getInputStream() has already been called for this request,解决request中getReader()和getInputStream()只能调用一次的问题_servletrequest.getreader只允许调一次https://blog.csdn.net/weixin_42718399/article/details/136237084?spm=1001.2014.3001.5502#3Jenkins(Windows环境)版本升级、迁移、负载均衡、双机器同步与备份_windows下的jenkins的job备份-CSDN博客文章浏览阅读1.1k次,点赞28次,收藏17次。Jenkins(Windows环境)版本升级、迁移、负载均衡、双机器同步与备份_windows下的jenkins的job备份https://blog.csdn.net/weixin_42718399/article/details/135404525?spm=1001.2014.3001.5502#2Vite+Vue3+SpringMVC前后端分离 解决跨域问题和session每次请求不一致问题_vue3 每次请求sessionid都不一样-CSDN博客文章浏览阅读1.1k次,点赞37次,收藏16次。Vite+Vue3+SpringMVC前后端分离通过vite/nginx解决跨域问题和session一致性问题_vue3 每次请求sessionid都不一样https://blog.csdn.net/weixin_42718399/article/details/135388463?spm=1001.2014.3001.5502

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/458858.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity类银河恶魔城学习记录10-1 10-2 P89,90 Character stats - Stat script源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Stat.cs using System.Collections; using System.Collections.Generic; us…

【MAC】OpenResty安装

首先官方网站&#xff1a;http://openresty.org/cn/download.html 安装&#xff1a; 我是安装官网去执行的安装命令 配置环境变量 1.打开配置文件 vim ~/.bash_profile2.粘贴进去变量配置 #OPENRESTY export NGINX_HOME/opt/homebrew/etc/openresty export PATH$PATH:$NGI…

【面试精讲】String是如何实现的?String源码分析

【面试精讲】String是如何实现的&#xff1f;String源码分析 目录 一、String实现机制 二、String不可变性&#xff08;使用final修饰&#xff09; 三、String 和 StringBuilder、StringBuffer 的区别 四、和equals的区别 五、String创建对象与JVM辨析 六、String源码解…

Mybatis 动态sql环境搭建(学习笔记16)

什么是动态sql:根据不同的条件生成不同的sql语句 借助功能强大的基于 OGNL 的表达式&#xff0c;MyBatis 3 替换了之前的大部分元素&#xff0c;大大精简了元素种类&#xff0c;现在要学习的元素种类比原来的一半还要少。 ifchoose (when, otherwise)trim (where, set)foreac…

拆解Spring boot:Springboot为什么如此丝滑而简单?源码剖析解读自动装配

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &a…

Screaming Frog SEO Spider:网站优化利器,轻松掌握网络爬虫精髓

在数字时代&#xff0c;网络爬虫已成为各行各业获取数据、分析趋势的重要工具。而在众多网络爬虫开发工具中&#xff0c;Screaming Frog SEO Spider以其强大的功能和易用性脱颖而出&#xff0c;成为众多网站优化师和SEO从业者的首选。 Screaming Frog SEO Spider是一款适用于M…

笔记本电脑数据恢复:如何轻松地从笔记本电脑恢复文件

不小心从笔记本电脑中删除了一些重要文件&#xff1f;或者恶意软件和其他不可控因素是否导致您的文件消失&#xff1f;人们很容易认为这些文件已经永远消失&#xff0c;并且无法恢复。但这与事实相差甚远。通过遵循正确的数据恢复礼仪并使用良好的数据恢复工具&#xff0c;您可…

英语翻译报价,千字英语翻译报价

众所周知&#xff0c;英语作为全球通用的语言&#xff0c;其翻译需求量极大。无论是欧美国家的日常交流&#xff0c;还是小语种的翻译工作&#xff0c;英语都常常作为中介语言&#xff0c;扮演着桥梁的角色。那么&#xff0c;英语翻译公司是如何定价的&#xff1f;每千字的英语…

Qt中进行客户端开发框架

在Qt中进行客户端开发是一种常见的做法&#xff0c;Qt是一个跨平台的C框架&#xff0c;提供了丰富的工具和类库&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;应用程序、网络应用程序以及其他类型的软件。以下是一些常用的Qt客户端开发框架和技术&#xff0c;希…

Exam in MAC [容斥]

题意 思路 正难则反 反过来需要考虑的是&#xff1a; (1) 所有满条件一的(x,y)有多少对&#xff1a; x 0 时&#xff0c;有c1对 x 1 时&#xff0c;有c对 ...... x c 时&#xff0c;有1对 以此类推 一共有 (c2)(c1)/2 对 (2) 符合 x y ∈ S的有多少对&#xff1a…

Qt客户端开发的技术难点

在Qt客户端开发中&#xff0c;可能会遇到一些技术难点&#xff0c;这些难点可能与UI设计、性能优化、跨平台兼容性等方面有关。以下是一些可能的技术难点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作…

虚拟游戏理财 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 在一款虚拟游戏中生活&#xff0c;你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。 现有一家Bank&#xff0c;它提供有若干理财产品m&#xff0c;风险及…

将SQL数据库转换为Mysql数据库

一、准备工作 1、SQL server安装包与已经有数据的mdf、ldf数据库文件&#xff1b; 2、.net Framework安装包&#xff1b;&#xff08;用于支持SQL Server安装的组件&#xff09; 3、MySql安装包&#xff1b;&#xff08;用于目标数据库的环境安装&#xff09; 4、navicat安装包…

YOLOv8旋转目标检测实战:训练自己的数据集

课程链接&#xff1a;https://edu.csdn.net/course/detail/39393 旋转目标检测是计算机视觉领域的一个高级任务&#xff0c;它在传统目标检测的基础上进一步发展。传统目标检测技术主要关注于识别和定位图像中的物体&#xff0c;通常以水平边界框(HBB)来标识目标物体的位置。而…

SpringBoot高级

1.自动配置-Condition Condition是Spring4.0后引入的条件化配置接口&#xff0c;通过实现Condition接口可以完成有条件的加载相应的Bean 进入 SpringBoot 启动类&#xff0c;点击进入 run() 可以看到这个方法是有返回值的&#xff0c;返回值为 ConfigurableApplicationConte…

[Redis]——主从同步原理(全量同步、增量同步)

目录 Redis集群&#xff1a; 主从同步原理&#xff1a; replid和offset: 全量同步和增量同步&#xff1a; repl_baklog文件&#xff1a; 主从集群的优化&#xff1a; Redis集群&#xff1a; 部署多台Redis我们称之为Redis集群&#xff0c;他有一个主节点(负责写操作)&…

什么是施密特触发器?一文详解

施密特触发器的定义 施密特触发器&#xff08;Schmitt Trigger&#xff09;是一种电子电路&#xff0c;常用于数字逻辑电路和信号处理电路中。它具有两个不同的阈值电压级别&#xff0c;通过这些不同的电压级别&#xff0c;可以将输入信号转换为相对稳定的输出信号。 当输入信…

【Datawhale组队学习:Sora原理与技术实战】使用KAN-TTS合成女生沪语音频

Sambert-Hifigan模型介绍 拼接法和参数法是两种Text-To-Speech(TTS)技术路线。近年来参数TTS系统获得了广泛的应用&#xff0c;故此处仅涉及参数法。 参数TTS系统可分为两大模块&#xff1a;前端和后端。 前端包含文本正则、分词、多音字预测、文本转音素和韵律预测等模块&am…

Django之Form组件

Django之Form组件 目录 Django之Form组件介绍手动渲染错误信息基于Form组件校验数据重写错误信息用户名与密码radioSelect单选Select多选Select单选checkbox多选checkbox 前端渲染 介绍 Form组件提供了一种在网页上收集用户输入数据并将其提交到服务器进行处理的机制&#xff…

实战纪实 | 记一次绕过宝塔的的文件上传

前几天找到个可以上传任意文件的上传点&#xff0c;成功上传phpinfo页面并能访问&#xff0c;但是不能成功上传一句话&#xff0c;发现这台主机装了宝塔&#xff0c;经过反复尝试终于成功上传一句话并连接。 0x01 漏洞发现 结果前期摸索&#xff0c;发现了一个上传点&#xff0…