表格多列情况下,loading不显示问题

embedded/2024/12/23 1:27:04/

问题描述:

        用element plus 做得表格,如下图,列数较多,且部分表格内容显示比较复杂,数据量中等的情况下,有一个switch 按钮,切换部分列的显示和隐藏,会发现,切换为显示的时候,会出现明显的卡顿,switch 也会明显卡顿一会之后,才显示成高亮状态。

        这是由于表格渲染的列比较多,且部分内容比较复杂,即使数据量算不上多,但渲染出来的DOM数量不少导致的,不过好在这里渲染卡顿不算严重,所以这里没做虚拟表格之类的优化。打算做个loading动画,在切换的时候,显示loading,让用户不会认为点了之后没反应。但加了loading之后,发现切换时loading显示不出来,应该是表格占用了渲染的主进程导致的。

        switch切换的时候,就会触发表格重新渲染了,这个问题不太好解决。后想到一种相对可行的方案,如下:

1、将原本绑定isAll (原本控制列是否显示的变量) 变量的switch改成绑定另一个变量fakeIsAll

<el-switchv-model="fackIsAll"active-text="查看全部"inactive-text="固定列"@change="toggleViewAll"
/>

2、通过setTimeout, 等switch状态切换完,loading显示后,再将fakeIsAll的值赋值给isAll.

const fakeIsAll = ref(false)
function toggleViewAll(){const loading = ElLoading.service({lock: true,background: 'rgba(255, 255, 255, 0)',})setTimeout(()=>{loading.close()},1000)setTimeout(() => {isAll.value = fakeIsAll.value}, 500);}

这样优化后,switch能马上切换状态,loading也能显示出来,不足之处在于,表格渲染期间,loading还是会卡顿。

不做虚拟表格优化的情况下,道友们时候有更好的方法,欢迎讨论。。。。


http://www.ppmy.cn/embedded/111416.html

相关文章

Visual Studio配置opencv环境

&#xff08;1&#xff09;打开属性页面&#xff08;鼠标放在解决方案上&#xff0c;点击右键会有一个属性选项弹出&#xff09; &#xff08;2&#xff09;配置opencv的include和opencv2路径&#xff0c;具体路径和版本根据自己电脑配置 &#xff08;3&#xff09;配置opencv…

Go开源日志库Logrus的使用

一、Logrus简介 Logrus 是一个流行的 Go 语言日志库&#xff0c;以其功能强大、性能高效和高度灵活性而闻名。有关更多介绍可查看 Logrus。 主要特点 丰富的日志级别&#xff1a;Logrus 支持多种日志级别&#xff0c;包括 Debug、Info、Warn、Error、Fatal 和 Panic&#xf…

图文讲解HarmonyOS应用发布流程

HarmonyOS应用的开发和发布过程可以分为以下几个步骤&#xff1a;证书生成、应用开发、应用签名和发布。 1. 证书生成&#xff1a; 在开始开发HarmonyOS应用之前&#xff0c;首先需要生成一个开发者证书。开发者证书用于标识应用的开发者身份并确保应用的安全性。可以通过Har…

如何在@GenericGenerator中显式指定schema

现在的情况是&#xff0c;在MySQL中有db1和db2两个数据库。项目使用Hibernate&#xff0c;可同时访问db1和db2&#xff0c;默认数据库为db1。表table2在db2中。且table2的主键名为ids&#xff0c;是自增长字段&#xff08;Auto Increment&#xff09;。 table2和ids的定义为&a…

Python习题 179:用 pathlib 模块列出指定目录下的所有子目录

(编码题)请写一个 Python 函数,使用 pathlib 模块列出指定目录下的所有子目录,并统计它们的总数。 参考答案Python 代码如下from pathlib import Pathdef list_files_and_directories(directory_path):"""列出指定目录下的所有子目录,并统计它们的总数。参…

Spring-bean的生命周期-前篇

Spring bean生命周期12个环节 1.阶段1&#xff1a;Bean元信息配置阶段 2.阶段2&#xff1a;Bean元信息解析阶段 3.阶段3&#xff1a;将Bean注册到容器中 4.阶段4&#xff1a;BeanDefinition合并阶段 阶段5&#xff1a;Bean Class加载阶段 6.阶段6&#xff1a;Bean实例化阶…

笔试强训day11

游游的水果大礼包 #include <iostream> #define int long longusing namespace std; int n, m, a, b;signed main() {cin>>n>>m>>a>>b;int ret 0;for(int x 0; x < min(n / 2, m); x) // 枚举 1 号礼包的个数{int y min(n - x * 2, (m - …

ASP.NET Core 入门教学二十九 DDD设计

在软件开发中&#xff0c;领域驱动设计&#xff08;Domain-Driven Design&#xff0c;简称DDD&#xff09;是一种重要的软件设计方法论&#xff0c;它强调通过深入理解业务领域来构建高质量的软件系统。DDD的核心思想是将复杂的业务逻辑集中在领域模型中&#xff0c;并通过分层…