当前位置: 首页 > news >正文

Vue3 虚拟列表组件库 virtual-list-vue3 的使用

Vue3 虚拟列表组件库 virtual-list-vue3 的基本使用

分享个人写的一个基于 Vue3 的虚拟列表组件库,欢迎各位来进行使用与给予一些更好的建议😊

概述:该组件组件库用于提供虚拟化列表能力的组件,用于解决展示大量数据渲染时首屏渲染缓慢和滚动卡顿问题

功能:该组件库主要包含 HFixedHeightVirtualListHFlexibleHeightVirtualList 两个组件

  • HFixedHeightVirtualList: - 定高虚拟列表组件,用于列表中每一项 item 的高度都是固定时
  • HFlexibleHeightVirtualList: - 不定高虚拟列表组件,用于列表中的每一项 item 都可能是不一样时

安装: npm i virtual-list-vue3

使用:🔺通过 item 具名插槽插槽,插入对应的 HTML 结构,该插槽也接收一个 { itemData } 属性(itemData 为该项 item 的数据

使用示例

定高虚拟列表示例: - HFixedHeightVirtualList

  • 在这里插入图片描述

  • <script setup lang="ts">
    import { HFixedHeightVirtualList } from 'virtual-list-vue3';const list = Array.from({ length: 1000 }, (_, i) => i + 1) // -- 1.模拟长列表数据(生产一个长度为1000的数组)
    </script><template><!-- 2.传入对应的 list 数据,与对应 item 的定高高度 --><HFxiedHeightVirtualList :list="list" :item-height="40"><!-- 3.通过 item 具名插槽传入对应的 item 的 HTML 结构,该插槽会返回该项的 itemData 数据  --><template #item="{ itemData }"><div class="item">{{ itemData }}</div></template></HFxiedHeightVirtualList>
    </template><style scoped>
    /* 4.基本样式,.item 的高度需要与上面传入的 item-height 配置的一样 */
    .item {height: 40px; /* 定高 */background-color: orange;color: white;line-height: 40px;text-align: center;margin-bottom: 8px;
    }
    </style>
    

不定高虚拟列表示例: - HFlexibleHeightVirtualList

  • 在这里插入图片描述

  • <script setup lang="ts">
    import { HFlexibleHeightVirtualList } from 'virtual-list-vue3';// -- 1.模拟长列表数据(生产一个长度为1000的,且值为不定数量的文字,为了模拟不定高的情况)
    const list = Array.from({ length: 1000 }, (_, i) => {let item = "小"if(i === 999) item = "END:"for(let i = 0; Math.floor(Math.random() * 200); i++) {item += "孔" // -- tip:注意这里不能使用英文来进行模拟,因为html的截断规则是根据单词来的,所以就会导致不会换行(了解)}return item
    }) </script><template><!-- 2. 传入对应的列表数据 --><HFlexibleHeightVirtualList :list="list"><!-- 3.通过 item 具名插槽传入对应的 item 的 HTML 结构,该插槽会返回该项的 itemData 数据  --><template #item="{ itemData }"><div class="item" >{{ itemData }}</div></template></HFlexibleHeightVirtualList>
    </template><style scoped>
    /* 4.基本样式: 不定高,根据内容适应高度 */
    .item {background-color: orange;color: white;margin-bottom: 8px;
    }
    </style>
    

Props

属性名说明类型默认值是否必传tip
list列表数据any[]-
width容器的宽度number` / `string“100%”当为 number 时以 px 为单位,当为 string 时,则会直接赋值到容器上
height容器的高度number / string“100vh”当为 number 时以 px 为单位,当为 string 时,则会直接赋值到容器上
bufferCount视区上、下额外展示的 DOM 节点数量(预加载)number6-
hiddenScrollbar是否隐藏滚动条booleanfalse-
reachBottomFn触底回调函数() => void / nullnull-
reachBottomFnDistance滚动到底部触发触底回调的触发距离(距离底部的距离)number50以 px 为单位
triggerBottomFnTime触发触底执行函数的节流时间number400以 ms 为单位

定高列表特有 Props

属性名说明类型默认值是否必传tip
itemHeight列表每一项 item 的高度number-以 px 为单位

不定高列表特有 Props

属性名说明类型默认值是否必传tip
initItemHeight列表 item 的预计高度number40预计高度,尽量要小点,可以多加载,但不能少,防止渲染不全(但也不能太过小,如 3、10…)

Props API

interface VitualListProps<T> {list: T[],bufferCount?: numberheight?: number | stringwidth?: number | stringhiddenScrollbar?: booleanreachBottomFn?: (...props: any[]) => any | nullreachBottomDistance?: numbertriggerBottomFnTime?: number
}interface FixedHeightProps<T> extends VitualListProps<T> {itemHeight: number
}interface FlexibleHeightProps<T> extends VitualListProps<T> { initItemHeight?: number
}

相关文章:

Vue3 虚拟列表组件库 virtual-list-vue3 的使用

Vue3 虚拟列表组件库 virtual-list-vue3 的基本使用 分享个人写的一个基于 Vue3 的虚拟列表组件库&#xff0c;欢迎各位来进行使用与给予一些更好的建议&#x1f60a; 概述&#xff1a;该组件组件库用于提供虚拟化列表能力的组件&#xff0c;用于解决展示大量数据渲染时首屏渲…...

WebRTC实现双端音视频聊天(Vue3 + SpringBoot)

目录 概述 相关概念 双端连接整体实现步骤概述 文章代码实现注意点 STUN和TURN服务器的搭建 开发过程描述 后端开发流程 前端开发流程 效果演示 Gitee源码地址 概述 文章描述使用WebRTC技术实现一对一音视频通话。 由于设备摄像头限制&#xff08;一台电脑作测试无法…...

第6章详细设计-6.9 PCB审查

6.9 PCB审查 6.9.1 布局阶段注意事项1.结构设计要求在PCB布局之前弄清楚产品的结构2.布局要求 6.9.2 布线注意事项6.9.3 接地处理&#xff08;1&#xff09;射频链路接地。&#xff08;2&#xff09;腔壳接地孔。&#xff08;3&#xff09;螺钉放置&#xff08;需要了解结构知识…...

docker与大模型(口语化原理和实操讲解)

文章目录 一、镜像images1&#xff09;下载安装2&#xff09;docker images相关命令(保存、删除、上传、别名、搜索镜像) 二、容器container1&#xff09;展现所有在跑的容器服务ps2&#xff09;start /restart / kill / stop /rm3&#xff09;exec /cp4&#xff09;run/create…...

Linux之vim模式下全选命令

在Linux系统中&#xff0c;使用Vim编辑器进行全选操作可以通过以下几种方式实现&#xff1a; 1.使用键盘快捷键 按下 ”ggVG”&#xff08;先按下”g”&#xff0c;再按下”g”&#xff0c;再按下”V”&#xff0c;最后按下”G”&#xff09;可以全选当前文件内容。其中 ”g…...

云原生周刊:Kubernetes v1.32 要来了

开源项目推荐 Woodpecker Woodpecker 是一款轻量级且功能强大的 CI/CD 引擎&#xff0c;以其高度可扩展性和易用性著称。它支持多种版本控制系统与编程语言&#xff0c;能够灵活适配不同开发流程&#xff0c;帮助团队实现高效的持续集成与交付。无论是个人项目还是大型团队&a…...

# JVM学习

JVM JVM是什么&#xff1f; Java虚拟机&#xff08;JVM&#xff09; 是一个抽象的计算机&#xff0c;它是一个运行时环境&#xff0c;用于执行Java字节码或编译后的Java程序。JVM屏蔽了底层操作系统的差异&#xff0c;使得Java程序可以在任何支持JVM的操作系统上运行。 JVM能…...

【代码随想录day33】【C++复健】62.不同路径;63. 不同路径 II;343. 整数拆分;96.不同的二叉搜索树

感觉dp的题真的很适合背&#xff0c;当然不是死记硬背&#xff0c;而是当做一种模板题&#xff0c;出来一道新的题就往模板题上面去靠&#xff0c;如果套对模板的话剩下的事情其实就简单了。所以只要看一遍解法知道大致思路其实就够了&#xff0c;毕竟大部分dp的代码也不算难写…...

《勇者斗恶龙3:HD-2D重制版》找幽灵船攻略分享

《勇者斗恶龙3&#xff1a;HD-2D重制版》中的幽灵船是游戏里非常独特的一个区域&#xff0c;而想要找到幽灵船的话还是比较麻烦的&#xff0c;首先是听到关于幽灵船在世界海域上航行的传闻&#xff0c;包括在海盗巢穴中&#xff0c;但幽灵船的出现有一些具体条件。 勇者斗恶龙3…...

基于 MATLAB 的模拟退火算法详解及实现

以下是一篇更详细的关于 模拟退火算法 (Simulated Annealing) 的 MATLAB 实现的教程和代码示例&#xff0c;涵盖基本概念、核心思想和代码实现。 一、模拟退火算法简介 模拟退火算法&#xff08;Simulated Annealing&#xff0c;简称 SA&#xff09;是一种随机优化算法&#x…...

MQTT 服务器常用的有哪些?

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;常用于物联网&#xff08;IoT&#xff09;设备之间的通信。以下是一些常用的 MQTT 服务器&#xff08;也称为 MQTT Broker&#xff09;&#xff1a; 1.Eclipse Mosqui…...

【android USB 串口通信助手】stm32 源码demo 单片机与手机通信 Android studio 20241118

android 【OTG线】 接 下位机STM32【USB】 通过百度网盘分享的文件&#xff1a;USBToSerialPort.apk 链接&#xff1a;https://pan.baidu.com/s/122McdmBDUxEtYiEKFunFUg?pwd8888 提取码&#xff1a;8888 android 【OTG线】 接 【USB转TTL】 接 【串口(下位机 SMT32等)】 需…...

汽车资讯新探索:Spring Boot技术引领

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车资讯网站的开发全过程。通过分析汽车资讯网站管理的不足&#xff0c;创建了一个计算机管理汽车资讯网站的方案。文章介绍了汽车资讯网站的系统分析部分&…...

简单的MCU与FPGA通过APB总线实现通讯(fpga mcu APB):乘法器为例

测试平台: GW1N4器件内置 M1内核;并且可以设置 APB总线与fpga 逻辑进行交互; 框图: +---------------------+ | | | M1 Microprocessor | <-----------------+ | | | | +-----------------…...

css uniapp背景图宽度固定高度自适应可以重复

page {height: 100%;background-image: url(https://onlinekc.a.hlidc.cn/uploads/20241115/350f94aaf493d05625a7ddbc86c7804e.png);background-repeat: repeat;background-size: contain;} 如果不要重复 把background-repeat: repeat;替换background-repeat: no-repeat;...

深度学习--优化器

笔记内容侵权联系删 优化器 在梯度下降算法中&#xff0c;有各种不同的改进版本。在面向对象的语言实现中&#xff0c;往往把不同的梯度下降算法封装成一个对象&#xff0c;称为优化器。 算法改进的目的&#xff0c;包括但不限于: 加快算法收敛速度; 尽量避过或冲过局部极值; …...

【嵌入式】关于push老仓库到新仓库的方法

1. 背景 公司项目经常会有需要从开源项目中镜像代码过来的活,所以常常会在自己的服务器上创建一个对应的仓库,然后使用命令将期push过去。为方便日后抄命令,这里记录一下使用的命令。 2. 操作步骤 2.1. 已下载的代码push 特别提醒: 使用此脚本前请确保你修改的代码已保存…...

从线下到线上,上门洗衣服务如何实现智能化升级?

在现代快节奏生活的推动下&#xff0c;上门洗衣服务作为一种新兴的服务模式正逐渐崭露头角。它以其便捷性和创新性&#xff0c;改变了传统洗衣行业的格局&#xff0c;为消费者提供了全新的选择&#xff0c;同时也为洗衣品牌带来了新的机遇与挑战。 一、上门洗衣服务的市场现状1…...

SQL字段来源表的解析

测试例子&#xff1a; SELECT e.NAME, d.DEPT_NAME,d.DEPT_ID,EMP_ID,100EMP_ID100 FROM EMP e JOIN DEPT d ON e.DEPT_ID d.DEPT_ID WHERE e.EMP_ID IN (SELECT EMP_ID FROM EMP WHERE DEPT_ID 10) 代码示例&#xff1a; package com.test; import org.apache.calcite.jd…...

理解 Python 解释器:CPython 与 IPython 的比较及选择指南

理解 Python 解释器&#xff1a;CPython 与 IPython 的比较及选择指南 在选择适合自己需求的 Python 解释器时&#xff0c;理解 CPython 和 IPython 之间的主要差异至关重要。本文将详细解释 CPython 和 IPython 的特性、优势和适用场景&#xff0c;以帮助用户做出明智的选择。…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...