微信小程序集成腾讯im,会话列表数据过多(长列表),卡顿问题的解决

这篇具有很好参考价值的文章主要介绍了微信小程序集成腾讯im,会话列表数据过多(长列表),卡顿问题的解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

我这边用小程序集成im,然后结合公司的需求,做了一个聊天的小程序,在测试上线的时候没有问题,结果到客户那边,因为他们聊天的人多,会话列表达到了300多条,然后点击会话列表,进入聊天页面,会卡顿。下图是测试环境的
微信小程序集成腾讯im,会话列表数据过多(长列表),卡顿问题的解决,微信小程序,小程序,长列表

尝试解决

因为我在im原有基础上,增加了很多遍历逻辑,im保存的用户信息较少,所以先获取会话列表,然后根据imid,去自己数据库查询用户信息,如果数据过多,先去调用接口,然后再将信息重新遍历设置到列表,所以我以为是这种代码造成的卡顿,结果把这些代码去掉以后,还是卡顿

发现问题

将那些逻辑遍历之类的代码去掉,发现列表第一次点击,不卡顿,第二次再点击,卡顿,所以我以为是会话页面的资源没有释放,然后我在返回的时候各种释放,类似于这样
微信小程序集成腾讯im,会话列表数据过多(长列表),卡顿问题的解决,微信小程序,小程序,长列表
但是呢,没效果。后来就在想,一样的代码,为什么长列表就会卡顿,然后在看文档的时候,发现了一个专门针对长列表的解决组件,试了一下,快了很多

recycle-view

要严格按照文档来集成,我就是因为少了一个配置,报错,以为是环境的问题,差点放弃

解决

按照文档集成recycle-view,把相关代码贴一下
布局代码

<view class="conversation-list-area">
			<!-- <scroll-view class="scoll-view" scroll-y="true"> -->
			<recycle-view batch="{{batchSetRecycleData}}" id="recycleId">
				<recycle-item wx:for="{{recycleList}}" wx:key="id">
					<ConversationItem wx:key="index" id="{{item.conversationID}}" data-type="{{item.type}}" conversation="{{item}}" bindtap="handleRoute" statusList="{{statusList}}" bind:transCheckID="transCheckID" charge="{{transChenckID===item.conversationID}}" wx:if="{{item.type!='@TIM#SYSTEM'}}" bind:updateLocalConversationList="updateLocalConversationList" data-type="{{item.type}}">
					</ConversationItem>
				</recycle-item>
			</recycle-view>
			<!-- </scroll-view> -->
		</view>

js代码

ready() {
					wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED, this.$onMessageReceived, this);
					ctx = createRecycleContext({
						id: 'recycleId',
						dataKey: 'recycleList',
						page: this,
						itemSize: { // 这个参数也可以直接传下面定义的this.itemSizeFunc函数
							height: this.rpx2px(150),
							width: this.rpx2px(750)
						}
					})


				},
...
rpx2px(rpxNum) {
					return rpxNum * app.globalData.rpx2px;
				},

app.js设置


onLaunch: function () {

		wx.getSystemInfo({
			success: e => {
			  // 设计稿一般是 750 rpx, 但是 canvas 是 px;
			  // 1rpx 转换成 px 的时候
			  this.globalData.rpx2px = 1 / 750 * e.windowWidth;
			}
		  });
		  .....
		  }
globalData: {
		....
		rpx2px:0,
		
	
	}

定义一个方法,用于数据的更新或者添加

	updateRecylerView(dataList) {
					wx.hideLoading()
				
					if(dataList.length==0){
						ctx.splice(0, 99999);
						ctx.forceUpdate()
						return
					}

					if (ctx.getList() == null || ctx.getList().length == 0) {
						ctx.append(dataList)
					} else {
						if(ctx.getList().length!=dataList.length){
							ctx.splice(0, 99999);
							ctx.append(dataList)
						}else{
							ctx.update(0, dataList);
							ctx.forceUpdate()
						}
					
					}
					

				},

因为在使用的过程中,发现不同的数据,比如现在页面上是有数据的,然后刷新以后没有数据,调用ctx.update(0, dataList),竟然没更新,所以对各种情况进行了适配

其他优化

我用小程序自带的工具进行了测评,可以测出一些不易发现的问题,比如后台没有对图片大小进行限制,竟然有将近0.5m大小的图片,如果这样的图片多了,占用资源也会很多,当然很卡
微信小程序集成腾讯im,会话列表数据过多(长列表),卡顿问题的解决,微信小程序,小程序,长列表

大家在开发小程序的时候,如果涉及到列表,在预期的将来,会有很多数据的情况下(可以本地用遍历赋值,制造大量数据测试),还是使用长列表,如果没那么多,用普通列表就可以了,在开发完以后,可以用上述的工具进行评分,会给出哪些问题需要优化文章来源地址https://www.toymoban.com/news/detail-704429.html

到了这里,关于微信小程序集成腾讯im,会话列表数据过多(长列表),卡顿问题的解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序实现tab切换和数据列表

    上篇文章介绍了微信小程序实现tab切换的一种方案(参考 https://blog.51cto.com/baorant24/6188157 ),感觉代码不是很精简,本文再用一个demo介绍微信小程序如何实现tab切换和数据列表。 微信小程序对应页面文件结构如下: 话不多说,直接上代码: (1)index.js文件,代码如下: (2)index.

    2024年02月05日
    浏览(51)
  • uniapp对接腾讯云IM+音视频。音视频含UI集成

    提示:作者已经实现uniapp集成腾讯云IM+音视频到android和ios平台,如有疑问可在下方留言。音视频为含ui集成 uniapp腾讯云音视频插件地址 官方插件显示的ios版本为9-15,本人ios版本号为16.1,亲测可行 uniapp 腾讯云音视频文档 uniapp 腾讯云IM文档 注意这个是uni的v3+ts版本,如果是v2版

    2024年02月07日
    浏览(51)
  • 微信小程序获取文件session会话无效

    微信小程序获取图片文件时session会话失效,可以将图片文件地址请求修改为post请求,返回文件流以base64编码输出。 具体请求方式如下:

    2024年02月15日
    浏览(30)
  • uniapp集成腾讯即时通信IM,实现一对一聊天,支持文字、表情、语音、图片、视频

    原则 介绍 效果图 uniapp集成腾讯即时通信IM,实现一对一聊天,支持文字、 使用方式 将文件放到相应的位置 app配置 main.js 配置 pages.json 配置 GenerateTestUserSig.js配置SDKAPPID和SECRETKEY 安装 npm i 运行 下载源码 联系方式 查看文章

    2024年02月09日
    浏览(92)
  • uniapp 微信小程序 Picker下拉列表数据回显问题

    效果图: 1、template 2、data 3、methods

    2024年02月16日
    浏览(44)
  • 微信小程序wxml的数据和事件的绑定,以及条件和列表的渲染

    关于微信小程序知识点一共做了六个博客,涵盖大部分内容,有想学习的可以按照以下顺序查看 1.微信小程序的启动和渲染过程(加组件分类和组件的基本使用以及API分类) 2.微信小程序wxml的数据和事件的绑定,以及条件和列表的渲染 3.微信小程序wxss相关介绍、全局配置和tabbar知识

    2024年02月10日
    浏览(63)
  • 微信小程序--操作微信自带的返回按钮使上个页面刷新列表或刷新数据

    首先要了解什么是 页面栈 ------------ 框架以栈的形式维护了当前的所有页面。 当发生路由切换的时候,页面栈的表现如下: 路由方式 页面栈表现 初始化 新页面入栈 打开新页面 新页面入栈 页面重定向 当前页面出栈,新页面入栈 页面返回 页面不断出栈,直到目标返回页

    2024年02月13日
    浏览(48)
  • uniapp小程序接入腾讯IM聊天

    腾讯IM中创建项目 拿到AppID 与 密钥  下载demo 将debug 文件夹拖到自己项目中  在第一个js文件中填入自己项目的APPID 与密钥 下载(tim-wx-sdk 上传文件 的依赖 看项目所需

    2024年02月11日
    浏览(43)
  • 微信小程序之WXML 模板语法之数据绑定、事件绑定、wx:if和列表渲染

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好

    2024年01月22日
    浏览(61)
  • 微信小程序腾讯位置服务

    腾讯位置服务 网址 : https://lbs.qq.com 逆地址解析可以实现位置 先读入门及使用限制 登录 - 手机号登录 申请开发者密钥(key):申请密钥 开通webserviceAPI服务:控制台 -应用管理 - 我的应用 -添加key- 勾选WebServiceAPI - 保存 (小程序SDK需要用到webserviceAPI的部分服务,所以使用该功

    2024年02月01日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包