Vue3 + vue-virtual-scroller虚拟列表实现加载长列表

一、安装

github地址:https://vue-virtual-scroller-demo.netlify.app/chat
demo运行地址:https://vue-virtual-scroller-demo.netlify.app/chat

npm安装

npm install --save vue-virtual-scroller@next

yarn安装

yarn add vue-virtual-scroller@next

在项目中引入:

main.ts文件中引入
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
import VirtualScroller from 'vue-virtual-scroller'app.use(VirtualScroller);

二、使用

1、基础使用,已经限定元素的高度
:items=“List”:List为要显示的数组数据
:min-item-size=“60”:一行元素的高度为60px
key-field=“roomId”:key为roomId,不设置会报错
h-full:设置容器的高度,可以为固定高度、计算高度或者flex-1的高度,一定要设置,不然会报超出限制或者内容只加载部分,还会造成dom全部加载出来而不是只加载可视区域

<DynamicScroller h-full :items="List" :min-item-size="60" key-field="roomId"><template v-slot="{ item, active }"><div class="roomNameCss">{{ item.roomName }}</div></template></DynamicScroller>

2、不限制原生高度
不限制高度需要DynamicScroller 和DynamicScrollerItem 配合使用

<DynamicScroller h-full :items="dataList" :min-item-size="32"  key-field="msgId" ref="liveMsg"><template v-slot="{ item, active }"><DynamicScrollerItem :item="item" :active="active" :size-dependencies="[item.name, item.content]"><div>{{item.name}}</div><div>{{item.content}}</div></DynamicScrollerItem></template></DynamicScroller>

3、使滚动条滚动到最底部
(liveMsg绑定参考【2、不限制原生高度】)

const liveMsg = ref()
liveMsg.value.scrollToBottom();

注意,如果虚拟列表的数据是动态变化的,在列表数据改变赋新值前需要清空列表数据再赋值,不然数据改变几次后滚动条就会滚不动了。
比如dataList.value = [],后再去赋值dataList.value = result,参考下面处理方法,虚拟列表外层div可以包裹一层加载样式( v-loading=“loading”)

//getDataRequest请求接口方法
const loading = ref(false)
const getData = async () => {loading.value = true;dataList.value  = [];const result = await getDataRequest().finally(() => {loading.value = false});dataList.value  = result;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Google发布图像生成新工具Whisk:无需复杂提示词,使用图像和人工智能将想法可视化并重新混合

Whisk 是 Google Labs 的一项新实验&#xff0c;可使用图像进行快速而有趣的创作过程。Whisk不会生成带有长篇详细文本提示的图像&#xff0c;而是使用图像进行提示。只需拖入图像&#xff0c;即可开始创建。 whisk总结如下&#xff1a; Whisk 是 Google 实验室最新的生成图像实…

【面试题】技术场景 4、负责项目时遇到的棘手问题及解决方法

工作经验一年以上程序员必问问题 面试题概述 问题为在负责项目时遇到的棘手问题及解决方法&#xff0c;主要考察开发经验与技术水平&#xff0c;回答不佳会影响面试印象。提供四个回答方向&#xff0c;准备其中一个方向即可。 1、设计模式应用方向 以登录为例&#xff0c;未…

MySQL 子查询(重在练习)

第九章: 子查询 1.子查询的需求分析和问题解决 1.1基本使用 子查询(内查询)在主查询之前一次执行完成 子查询的结果被主查询(外查询)调用 注意事项 子查询要包含在括号内 将子查询放在比较条件的右侧 单行操作符对应单行子查询,多行操作符对应多行子查询 1.2子查询的分类…

物联网开发 的开发语言建议

对于物联网开发&#xff0c;选择合适的编程语言取决于具体的项目需求、硬件平台以及开发团队的技能。以下是几种常用的物联网开发语言及其适用场景&#xff0c;特别考虑到您当前的工作空间中包含 JavaScript 和 Vue 等技术栈&#xff1a; JavaScript (Node.js) 优点&#xff1a…

LeetCode:3298. 统计重新排列后包含另一个字符串的子字符串数目 II(滑动窗口 Java)

目录 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 题目描述&#xff1a; 实现代码与解析&#xff1a; 滑动窗口 原理思路&#xff1a; 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 题目描述&#xff1a; 给你两个字符串 word1 和 word2 。 如果…

海外招聘丨卡尔斯塔德大学—互联网隐私和安全副高级讲师

雇主简介 卡尔斯塔德大学以研究、教育和合作为基础。通过让社区参与知识发展&#xff0c;卡尔斯塔德大学为地区、国家和国际研究和教育发展做出了贡献&#xff0c;旨在提高可持续性、民主和健康。我们富有创造力的学术环境以好奇心、勇气和毅力为特征。通过采取批判性方法&…

CTFshow—文件包含

Web78-81 Web78 这题是最基础的文件包含&#xff0c;直接?fileflag.php是不行的&#xff0c;不知道为啥&#xff0c;直接用下面我们之前在命令执行讲过的payload即可。 ?filephp://filter/readconvert.base64-encode/resourceflag.php Web79 这题是过滤了php&#xff0c;…

iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)

引言 在移动应用中&#xff0c;图片上传是一个常见的功能&#xff0c;尤其是在个人中心或社交平台场景中&#xff0c;用户经常需要上传图片到服务器&#xff0c;用以展示个人风采或记录美好瞬间。然而&#xff0c;实现多图片上传的过程中&#xff0c;如何设计高效的上传逻辑并…

Cannot run program “docker“: CreateProcess error=2,系统找不到指定的文件

今天被这个问题坑了, 网上教程全是直接装插件就行 ,结果我连接可以成功 但是执行docker compose 就会出错, 检测配置 报错com.intellil,execution,process.ProcessNotCreatedException: Cannot run program “docker”: CreateProcess error2,系统找不到指定的文件 gpt 要我去…

Blender 2D动画与MATLAB数学建模:跨界融合的创新实践探索

文章目录 一、数据交换&#xff1a;从科学计算到创意表达的桥梁二、脚本自动化&#xff1a;从手动操作到无缝连接的升级三、跨界融合的创新实践意义《Blender 2D动画制作从入门到精通》亮点内容简介作者简介 《MATLAB数学建模从入门到精通》亮点内容简介作者简介 在数字创意与科…

vue项目上传ofd文件,导致文件类型丢失问题

1、问题 上传ofd文件&#xff0c;传到java后端&#xff0c;变成了无类型的文件&#xff0c;最后通过排查&#xff0c;发现前端通过vue组件上传的文件&#xff0c;没有文件类型了 2、解决办法 将文件内容重新放到一个新的文件中&#xff0c;并且给这个新的文件设置ofd类型 3…

HarmonyOS Next 日志工具介绍

HarmonyOS Next 日志工具介绍 在HarmonyOS Next开发中&#xff0c;日志是我们调试定位问题的主要手段&#xff0c;不管是hilog还是console&#xff0c;最终都可以输出到DevEco Studio的日志模块中&#xff1a; 在这里可以过滤应用进程、日志级别、日志内容呢&#xff0c;也可…

NUTTX移植到STM32

STM32移植NUTTX 1. Ubuntu下搭建开发环境1.1 先决条件1.2 下载 NuttX1.3 使用Make 进行编译1.4 烧录运行 2.通过NUTTX点亮LED2.1 部署操作系统2.2 修改配置文件2.3 编译运行程序 开发板&#xff1a;DshanMCUF407 官方开发文档&#xff1a;安装 — NuttX latest 文档 参考文档&…

什么是Transformer模型中的KV缓存:上下文新增那之前计算的KV还可用,在原有基础上对新增的进行计算就行

什么是Transformer模型中的KV缓存? 在Transformer模型中,KV缓存(Key-Value Cache)具有重要作用,以下是关于它的详细介绍: 概念含义 KV缓存主要是用于存储在模型推理过程中已经计算过的键(Key)和值(Value)信息。在Transformer架构里,比如在自注意力机制等计算环节…

【微服务】4、服务保护

微服务架构与组件介绍 单体架构拆分&#xff1a;黑马商城早期为单体架构&#xff0c;后拆分为微服务架构。跨服务调用与组件使用 服务拆分后存在跨服务远程调用&#xff0c;如下单需查询商品信息&#xff0c;使用openfeign组件解决。服务间调用关系复杂&#xff0c;需维护服务…

【网络安全 | 漏洞挖掘】通过模拟功能实现提权(Bugcrowd)

未经许可,不得转载。 我将与大家分享我在 Bugcrowd 的某个项目中发现的一个漏洞,该项目中有一个“用户模拟”功能。 什么是用户模拟? 用户模拟允许管理员在不知晓用户凭据的情况下“以用户身份登录”。这种功能常见于管理员需要调试问题、审查用户权限或解决投诉的平台中。…

蓝桥杯训练

1对于一个字母矩阵&#xff0c;我们称矩阵中的一个递增序列是指在矩阵中找到两个字母&#xff0c;它们在同一行&#xff0c;同一列&#xff0c;或者在同一 45 度的斜线上&#xff0c;这两个字母从左向右看、或者从上向下看是递增的。 例如&#xff0c;如下矩阵中 LANN QIAO有…

安装MySQL的五种方法(Linux系统和Windows系统)

一.在Linux系统中安装MySQL 第一种方法:在线YUM仓库 首先打开MySQL官网首页 www.mysql.com 找到【DOWNLOADS】选项&#xff0c;点击 下拉&#xff0c;找到 【MySQL Community(GPL) Downloads】 在社区版下载页面中&#xff0c;【 MySQL Yum Repository 】链接为在线仓库安装…

【Spring Boot 应用开发】-01 初识

特性 Spring Boot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是帮助开发者快速创建独立的、生产级的基于 Spring 框架的应用程序。以下是 Spring Boot 的一些主要特点&#xff1a; 简化配置&#xff1a;Spring Boot 提供了自动配置机制&#xff0c;能够根据类路径…

数学基础 -- 拉普拉斯算子的原理与应用

拉普拉斯算子的原理与应用 拉普拉斯算子&#xff08;Laplacian Operator&#xff09;是图像处理中用于检测区域二阶变化的重要工具&#xff0c;尤其擅长检测图像中的边缘、斑点等区域特征。它是基于图像的二阶导数&#xff0c;在空间域中描述像素强度变化的加速度。 1. 拉普拉…