判断 小程序 是否 滚动到页面底部 scrolltolower_微信小程序长列表性能优化——recycle-view

2b5c53062d2099144b3e38252ee50fc2.png

背景:

第七次人口普查项目使用是微信小程序原生框架,组件是根据用户需求由项目组前端组组长封装完成的。采集小程序正式登记首页列表页面,根据腾讯老哥在sentry上的监控可以看出,列表页面前端性能比较差,主要表现在一些较老机型,例如:OPPOR9这些较老的机型在页面渲染数据量较大的时候出现白屏、卡顿等问题。

针对以上问题,腾讯老哥提供了一个解决方案,主要是采用微信小程序官方提供的 recycle-view 组件优化列表页面性能,提升用户使用体验。

下面将还原需求场景,并且演示 recycle-view 组件的用法。

1.下载 recycle-view 组件

npm install --save miniprogram-recycle-view

项目的所有组件统一放在 components 文件夹下,将 miniprogram_dist 文件夹下的文件放在小程序项目的 components 文件夹下的 recycle-view 文件夹下。

2.使用 recycle-view 组件

页面中引入组件,在对应文件的 json 文件中填写文件路径:

{  "usingComponents": {    "recycle-view": "../../components/recycle-view/recycle-view",    "recycle-item": "../../components/recycle-view/recycle-item"  }

3.在WXML中使用

      {{item.idx+1}}. {{item.title}}    

注解:

height// recycleView的高度,可以是固定值,因业务需求博主这里是变量bindscrolltolower// recycle-view 组件自定义事件,判断是否滚动到底部scroll-with-animation// 是否开启滚动动画

4.recycle-view 配置

onLoad: function (options) {const ctx = createRecycleContext({      id: 'recycleId',      dataKey: 'formalList',      page: this,      itemSize: function (item, index) {        return {          width: systemInfo.windowWidth,          height: 70        }      }  } }

5.recycle-view 自定义方法

onPageScroll: function () {}, // 一定要留一个空的onPageScroll函数scrollToLower: function (e) {    if (this.isScrollToLower) return    this.isScrollToLower = true    this.page = this.page + 1    const {formalList, isScrollToLower} = this.getFormalList(true)    this.ctx.append(formalList, () => {      this.isScrollToLower = isScrollToLower    })  }

小结:

本篇文章主要是讲博主可以使用一次 recycle-view 组件优化长列表的过程,可能很多人看到后会一头雾水,新手还请借鉴“微信小程序扩展组件长列表优化官方文档”。长列表优化还有哪些解决方案?还请有知道的大佬评论留言给出见解。

传送门:https://developers.weixin.qq.com/miniprogram/dev/extended/component-plus/recycle-view.html

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

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

相关文章

java rop_Java命令行界面(第23部分):Rop

java ropRop库在其主页上被描述为“用Java编写的轻量级命令行选项解析器”。 Rop的“简介”还指出:“ Rop的设计目的是最小化同时方便,并涵盖了大多数常见的命令行解析用例。” 这篇文章是本系列中有关解析Java命令行参数的系列文章中的第23部分&#xf…

java 接口 私有_Java 9:好的,坏的和私有的接口方法

java 接口 私有Java 9 是在几周前发布的。 查看发行说明 ,其中包含许多有趣的功能。 不过,我觉得并非一切都是不如Oracle和Java行家似乎图片吧 。 我看到了Java世界中的三个趋势,分别是好,坏和丑陋。 让我们从好的开始。 Birdman…

python卸载module_Python学习笔记

拖了一整年终于开始学习Python编程。为了逼自己快速上路,强行要求自己本学期的两门课程全部的coding作业用Python完成。 一门机器学习(computational Stats),一门Jeff WU 大佬的实验设计与分析(DOE)。即使R…

mlp神经网络_白天鹅黑天鹅灰天鹅?卷积神经网络帮你搞定识别

全文共3014字,预计学习时长6分钟本文将通过一系列的天鹅图片来解释卷积神经网络(CNN)的概念,并使用CNN在常规多层感知器神经网络上处理图像。图像分析假设我们要创建一个能够识别图像中的天鹅的神经网络模型。天鹅具有某些特征&am…

java登录界面命令_Java命令行界面(第26部分):CmdOption

java登录界面命令由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 。 CmdOption在其GitHub主页上被描述为“一个通过注释配置的,用于Java 5应用程序的简单注释驱动命令行解析器工具包。” 该项目的副标题是“…

getopt java_Java命令行界面(第28部分):getopt4j

getopt javagetopt4j的页面将其描述为“一个根据GNU样式解析命令行参数的库。” 然后, 页面介绍getopt4j :“getopt4j库旨在以与glibc (GNU C运行时库)中的C getopt()函数相同的方式解析命令行选项。 与原始…

springboot redis token_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验

优质文章,及时送达作者 | wangzaiplus链接 | www.jianshu.com/p/6189275403ed一、概念幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次比如:订单接口, 不能多次创建订单支付接口, 重复支付同一笔订单只能扣一次钱支付宝回调接口, 可能…

java 示例_功能Java示例 第2部分–讲故事

java 示例这是称为“ Functional Java by Example”的系列文章的第2部分。 我在本系列的每个部分中开发的示例是某种“提要处理程序”,用于处理文档。 在上一部分中,我从一些原始代码开始,并应用了一些重构来描述“什么”而不是“如何”。 …

python range函数范围_Python range函数

Python range函数教程 range函数详解 语法 range(start, stop[, step]) 参数 参数 描述 start 计数从 start 开始。默认是从 0 开始。 stop 计数到 stop 结束,但不包括 stop。 step 步长,默认为1,可以支持负数。 返回值 返回生成的序列。 案例…

openpyxl删除添加excel列_Python | 如何使用Python操作Excel(二)

0 前言在阅读本文之前,请确保您已满足或可能满足一下条件:请确保您具备基本的Python编程能力。请确保您会使用Excel。请确保您的电脑已经安装好Python且pip可用。请确保您已经读过前文:如何使用Python操作Excel(一)LogicPanda,公众…

payara 创建 集群_使用Payara Micro的Easy Java EE Microservices

payara 创建 集群想知道如何开始使用Java EE Microservices? 使用Java EE API部署微服务只需要几个快速步骤。 许多人认为Java EE对于与微服务一起使用而言过于繁重,但事实并非如此……尤其是如果您仅利用服务所需的Java EE规范。 在这篇简短的文章中&am…

php导出页面居中设置,PHPExcel导出插入图片和居中问题

首先到网上先下载PHPExcel下载后解压得到这两个文件下载后引用该文件最后编写相关代码:首先是图片插入导出$objDrawing new PHPExcel_Worksheet_Drawing();$objDrawing->setName(‘Photo‘);$objDrawing->setDescription(‘Photo‘);$objDrawing->setPath…

两台电脑通过usb共享网络_怎样让电脑通过手机共享上网?

手头有部七年前买的安卓智能手机已经不用了,卖掉不值钱,放在家里也是浪费。能否让它继续发挥余热呢?最近找到了一个好办法,就是可以让个人电脑通过它来上网(如下图所示):1. 用数据线将电脑与手机…

linux redis客户端_你见过能把Redis的主从复制讲这么明白的吗?

概念1.Conception(概念)Redis的复制也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。2.Function(功能)读写分离(秉持与RDBMS 相同的设计理念)容灾恢复R…

discuz3.1用哪个版本php版本好,Discuz应用中心安装模板提示版本号不匹配适用于X3.3 X3.2 X3.1的解决方法...

有时候我们从应用中心安装模板,在应用中心里模板作者设定允许我们的程序版本,但是我们安装时却提示版本号不匹配,那这是为什么呢?经过我们分析发现是因为X3和X3.1,X3.2的模板是完全兼容的,很多模板是在X3的…

arch linux arm下载_arm开发板运行hello word的详细过程

arm开发板运行helloword1.uboot的编译​ 这里已经安装好了交叉编译工具链,如果自己的电脑下没有,请自行百度安装。将下载好uboot到linux下,进行解压-->打补丁-->编译-->烧写,执行以下命令完成上述四个步骤(不…

小程序 input自动换行_直播 | 最实用的微信小程序自动化测试技术独家揭秘

随着微信小程序的功能和生态日益完善,很多企业级小程序项目的页面越来越多,业务逻辑也越来越复杂。如何做好微信小程序的自动化测试成为测试同学面临的一大难题。如何合理构建多端架构和自动化测试体系?如何深入理解微信小程序特性和技术原理…

sit matlab,LabView SIT工具包的使用和安装说明

之前一直在用Simulink做仿真模型,现在要做测试需要用NI的设备和LabView软件,通过一段时间的学习,在SIT的使用上有了点小认识拿来跟大家分享一下。需要注意的是,必须是先安装MatLab Simulink 然后安装SIT工具包,如果先安…

opencv 把3通道图像转成单通道_小强学Python+OpenCV之-1.4.3图像(矩阵)加减运算

引入问题引入,考虑以下几个问题:Q1. 一个3通道像素p的BGR分量(8bit表示)值均相同,那么这个像素是什么颜色的?Q2. 该像素p加上自己,即,像素p的各个通道值翻倍,那么这个像素…

mvc 404错误 php,java - springmvc 请求无法到达controller,出现404错误

springmvc 请求无法到达controller,出现404错误web.xmltestmvcindex.htmlindex.htmindex.jspdefault.htmldefault.htmdefault.jspspringmvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:springmvc-servlet.xml1springmvc/org.…