更新记录

2.0.0(2025-09-06) 下载此版本

  • 【重要】实现item复用,滚动更流畅,限制所有item高度必须一致。

1.0.3(2025-03-12) 下载此版本

  • 修复 滚动且非加载期间偶尔出现空白区域的Bug
  • 修复 不定高item条目过少时部分情况下显示不全的Bug

1.0.2(2025-03-04) 下载此版本

  • 修复 uni-recycle-view子项过少时显示数目不正确的Bug 感谢@鸿程
查看更多

平台兼容性

uni-app x(4.76)

Chrome Safari Android iOS 鸿蒙 微信小程序
5.0

uni-recycle-view

此组件支持uni-app-x(web端、app端、小程序端),不支持非uni-app-x项目。此插件1.x版本最低支持HBuilderX 4.11,2.0及以上版本最低支持HBuilderX 4.81。

为了实现更流畅的滚动性能,自此插件2.0版本起,itemHeight为必传属性,既所有item高度一致才可以使用此组件。如果有动态item高度的需求可以下载1.x版本使用。

uni-recycle-view 组件是一个开源的、适用于展示超长列表的组件,它有2个优势:

  • 更快的初始化速度
  • 更低的内存占用

背景

uni-app x 的 list-view组件,在ui层面基于原生的recycle-view封装,对于长列表的渲染资源可以复用。

但在vue环境下,装载长列表会对列表所有数据都创建VNode,不管渲染层这些列表是否显示。创建大量VNode会影响初始化速度和内存占用。

uni-recycle-view 组件只创建了有限的VNode,循环复用这些VNode。uni-recycle-view组件内部通过计算决定哪些数据需要在界面展示,默认展示当前滚动位置的所在屏及上下各5屏的数据。

同时它也有一些限制和注意事项:

  1. uni-recycle-view 组件适用于仅使用一个for循环创建所有列表项的场景。
  2. 由于滚动过程中会计算哪些数据需要渲染,因此滚动流畅度略低于list-view组件。
  3. 2.0版本起限制所有item高度一致

所以uni-recycle-view 组件是对list-view组件的一个补充方案。如果list-view的初始化速度和内存占用满足你的需求,那么继续使用list-view即可。

一般联网的分页加载列表,仍然可以使用list-view。uni-recycle-view 组件常见的场景是本地一次性遍历了大量数据并需要立即渲染在界面上。

在hello uni-app x的模板->自定义虚拟长列表示例中可以看到演示。

基本用法

示例参考:hello uni-app-x 虚拟长列表模板

uni-recycle-view组件传入通过绑定list属性:list="list"传入含所有数据的列表。经过组件内部计算,由作用域插槽返回真实要渲染的部分数据v-slot:default="{items}"。最终仅需渲染items而不是list,从而节省了大量的计算消耗及内存占用。

属性及事件

属性名 类型 默认值 说明
list any[] [] 列表所有数据
itemHeight number 40 每项占用高度(包括margin),此属性自2.0版本必传
其他 - - 其余属性及事件会透传给内部的scroll-view组件,参考: scroll-view组件

uni-recycle-item

uni-recycle-item用于渲染uni-recycle-view筛选出的用于展示的数据。

属性及事件

属性名 类型 默认值 说明
offset number - 由uni-recycle-view计算得来的组件偏移距离

注意事项

  • uni-recycle-view和uni-recycle-item必须搭配使用

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

uni-recycle-view(以下简称软件)源码使用许可协议

2022年10月

本许可协议,是数字天堂(北京)网络技术有限公司(以下简称DCloud)对其所拥有著作权的“软件”,提供的使用许可协议。

您对“软件”的复制、使用、修改及分发受本许可协议的条款的约束,如您不接受本协议,则不能使用、复制、修改本软件。

授权许可范围

a) 授予您永久性的、全球性的、免费的、非独占的、不可撤销的本软件的源码使用许可,您可以使用这些源码制作自己的应用。

b) 您只能在DCloud产品体系内使用本软件及其源码。您不能将源码修改后运行在DCloud产品体系之外的环境,比如客户端脱离uni-app,或服务端脱离uniCloud(如涉及uniCloud)。

c) DCloud未向您授权商标使用许可。您在根据本软件源码制作自己的应用时,需以自己的名义发布软件,而不是以DCloud名义发布。

d) 本协议不构成代理关系。

DCloud的责任限制 “软件”在提供时不带任何明示或默示的担保。在任何情况下,DCloud不对任何人因使用“软件”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。

您的责任限制

a) 您需要在授权许可范围内使用软件。

b) 您在分发自己的应用时,不得侵犯DCloud商标和名誉权利。

c) 您不得进行破解、反编译、套壳等侵害DCloud知识产权的行为。您不得利用DCloud系统漏洞谋利或侵害DCloud利益,如您发现DCloud系统漏洞应第一时间通知DCloud。您不得进行攻击DCloud的服务器、网络等妨碍DCloud运营的行为。未经书面许可,您不得利用DCloud的产品进行与DCloud争夺开发者的行为。

d) 如您违反本许可协议,需承担因此给DCloud造成的损失。

本协议签订地点为中华人民共和国北京市海淀区。

根据发展,DCloud可能会对本协议进行修改。修改时,DCloud会在产品或者网页中显著的位置发布相关信息以便及时通知到用户。如果您选择继续使用本框架,即表示您同意接受这些修改。

条款结束