解决微信小程序数据渲染缓慢或卡顿的方法 (uniapp vue3)

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

在微信小程序中渲染数据时通常会使用setData方法,但是setData对数据是有影响的,单次设置的数据不能超过1024kB,否则就会出现卡顿甚至有时会导致小程序闪退等现象。而我们平时在实现业务时,一般会采取数据分页而防止大量数据渲染导致小程序白屏/卡顿,例如在一些商城平台需要滚动时切换菜单,也需要回显购物车数据的情况下,无法进行分页处理,我的方法是把从接口获取到的数据进行格式化处理后,进行递归调用(递归一次进行一次setDate从而不进行一次性渲染大量数据),代码如下:

<template>
	<scroll-box>
		<!-- 菜单 -->
		<view>
			<view v-for="(item,index) in truthfulData" :key="item.id">
				{{item.title}}
			</view>
		</view>
		
		<!-- 子列表 -->
		<view>
			<!-- 菜单 -->
			<view v-for="(item,index) in truthfulData" :key="item.id">
				{{item.title}}
			</view>
			<view>
				<!-- 子列表 -->
				<view v-for="(childItem,childIndex) in itme.childList" :key="childItem.id">
					{{childItem.name}}
				</view>
			</view>
		</view>
	</scroll-box>
</template>

<script setup lang="ts">
// 获取数据列表
const truthfulData = ref(null) // 真实渲染数据
// 处理数据模型 [{id,title,childList:[]},{id,title,childList:[]}...]
async function getDate() {
	try {
		// 1. 通过接口调用获取需要渲染的数据列表 
		const dateList= await getDateList()
		// 2. 调用setDate优化函数
		truthfulData.value = [] 
		injectDate(dateList.data,0,0)
		// 3. 进行渲染完成后的容器数据获取 - 小程序 uni.createSelectorQuery().select("#id").boundingClientRect(data=>{...}).exec() 是异步方法需要在数据渲染后执行
		nextTick(() => {
			// ... 
		})
		 
	} catch (e) {
		console.log(e);
	}
}

// 优化渲染数据 
function injectDate(virtuallyDate : [any], pIndex : number, index : number) {
	if (virtuallyDate.length === pIndex) return

	// 当菜单数据为空时
	if (!truthfulData.value[pIndex]) {
		// 数据最外层菜单赋值
		truthfulData.value[pIndex] = {
			id: virtuallyDate[pIndex].id,
			title: virtuallyDate[pIndex].title,
			childList: [] // 需要渲染的子集数据
		}
	}

	// 添加数据
    truthfulData.value[pIndex].childList.push(...virtuallyDate[pIndex].childList.slice(index, index + 20)) // 20 根据自己的数据大小拟定
    let i = index + 20 
	if (i >= virtuallyDate[pIndex].childList.length) i = 0  
	initCommodityList(virtuallyDate , i === 0 ? pIndex + 1 : pIndex, i) // 递归调用
}
</script>

递归setDate 渲染之后可用正常获取容器的宽高进行进一步业务扩展
大致效果如下:
uniapp数据加载缓慢,微信小程序,uni-app,小程序
建议搭配图片懒加载使用,防止大量图片同时请求导致服务器承受不住文章来源地址https://www.toymoban.com/news/detail-713352.html

到了这里,关于解决微信小程序数据渲染缓慢或卡顿的方法 (uniapp vue3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序之数据的同步渲染

    结论: 微信小程序通过setData方法实现数据的同步渲染,直接修改data无法实现同步渲染。 小程序分为逻辑层和渲染层,而每次逻辑层改变了,要借用Native运行。小程序的渲染层和逻辑层由两个线程管理:渲染层的界面使用了 WebView 进行渲染;逻辑层采用 JsCore 线程运行 JS 脚本

    2024年02月11日
    浏览(50)
  • 微信小程序基础使用-请求数据并渲染

    小程序模板语法-数据绑定 在js中定义数据 小程序的data是一个对象,不同于vue的data是一个函数 在模块中获取使用数据 小程序中使用 {{}} 实现数据与模板的绑定 内容绑定: view{{ 属性名 }}/view 属性绑定: input value=\\\"{{属性名}}\\\" / {{}} 内写的是表达式 简易双向绑定 小程序中提供了

    2024年02月08日
    浏览(89)
  • 使用微信小程序云存储中的fileID渲染出错的解决

    [渲染层网络层错误] Failed to load local image resource /pages/center/cloud://cloud1-1g0b42x731618183.636c-cloud1-1g0b42x731618183-1317112875/avatarUrl/%E5%A4%B4%E5%83%8F_2cc84e26640db55d04179fe54c4fb585_1678620824098.png  the server responded with a status of 500 (HTTP/1.1 500 Internal Server Error) (env: Windows,mp,1.06.2301160; lib: 2.14.1)  导致

    2024年02月10日
    浏览(49)
  • 解决微信小程序渲染层网络层错误 Failed to load media

    微信小程序引入网络视频的时候:出现 渲染层网络层错误 Failed to load media 给video组件加入autoplay后错误消失,但是一进入页面就播放不是我想要的效果 添加下面代码: 一进来就自动播放 趁他没反应过来 在Load()中添加如上代码 把他暂停。

    2024年02月11日
    浏览(135)
  • 微信小程序---缓慢展开和收起效果(不需要wx:if控制实现)

    效果一: 点击中间问题,在中间缓慢展开 ,将下面往下撑开,点击再次收起效果 效果二: 点击添加商品,缓慢向下展开,点击收起,缓慢将下面收起效果 1、实现的原理: 通过height高度来控制展开或收起,当不需要展示时,高度为0,超过的部分用overflow: hidden;来隐藏,可

    2024年02月17日
    浏览(60)
  • 关于微信小程序中如何实现数据可视化-echarts动态渲染

    移动端设备中,难免会涉及到数据的可视化展示、数据统计等等,本篇主要讲解原生微信小程序中嵌入 echarts 并进行动态渲染,实现数据可视化功能。 基础使用 首先在 GitHub 上下载 echarts 包 地址:https://github.com/ecomfe/echarts-for-weixin/tree/master 下载项目 解压压缩包,将 ec-canva

    2024年01月25日
    浏览(81)
  • 解决element ui大数据渲染表格时严重卡顿的问题

    element ui中的table表格组件在大量数据渲染的时候渲染会出现严重的卡顿问题,虽然网上也有很多解决方案,比如什么延迟加载,虚拟加载等等,这里为了避免走弯路,直接上终极解决方案大招:趁早换组件、马上换组件、现在就去换组件!!! 推荐组件:umy-ui 官方文档:u

    2024年03月17日
    浏览(54)
  • 有效解决微信小程序加载视频[渲染层网络层错误] Failed to load media

    问题1,小程序的视频一般都是放在网络上的,没谁能把视频放本地把,所以在小程序视频插件在加载视频的时候,就会出现如下错误:[渲染层网络层错误] Failed to load media wxml加载视频代码如上图,有人说加上controls就解决了。狗屁 我加了,结果 错误依旧,那么有人说 加载

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

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

    2024年02月10日
    浏览(63)
  • [微信小程序踩坑]微信小程序editor富文本组件渲染字符串时,内部图片超出大小导致无法正常渲染或回显(数据传输长度为 3458 KB,存在有性能问题!)

    富文本组件: 回显方法: bug复现: 数据:\\\"p杰佛的撒娇佛是阿达分阶段实施的佛教的撒img src=\\\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/

    2024年02月08日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包