uni app 微信小程序 一次性加载几千条数据优化处理

这篇具有很好参考价值的文章主要介绍了uni app 微信小程序 一次性加载几千条数据优化处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

公司销售订单详情里 机器明细数据超过4、5000台的时候整个页面出现空白,当然也别问我为什么要一次性加载这么多条数据,问就是需求设计如此。

分析

因为需要显示每个类别需要统计总数量、总金额,所以后台返回的数据格式是包裹两层list,前端需要遍历两次。setData一次性能超过限制、 child项没有修改为组件的方式。自定义组件的更新只在组件内部进行,不受页面其他部分内容的影响。

<uni-load-more>接口返回上千条数据怎么优化,微信小程序,小程序

 

后台返回数据格式

<uni-load-more>接口返回上千条数据怎么优化,微信小程序,小程序

HTML(按照之前代码优化,命名各种行内样式就懒得修改了)

<view style="background-color: #fff;padding:12rpx" v-for="(item,index) in list.sale_order_product_list"
				:key="index">
				<view class="bigListBox">
					<view class="oneTitle">
						<view style="display:flex">
							<view style="font-weight: bold;" @click="openPop(index,item)">{{item.name}}</view>
							<view class="ico_up" v-if="item.iconshow" @click="openPop(index,item)"></view>
							<view class="ico_down" v-else @click="openPop(index,item)"></view>
							<view class="pop-rightTitle">
								<view class="rightTitle" style="width: 180rpx;">共{{item.sum_num}}台</view>
								<view class="rightTitle" style="width: 220rpx;">合计¥{{item.sum_money}}</view>
							</view>
						</view>
					</view>
					<view v-for="(cList,key) in item.childObj" :key="key">
						<child-item :list="cList" :p-index="key"></child-item>
					</view>
				</view>
			</view>

子组件

<template>
	<view>
		<view style="background-color: #fff"
			v-for="(product,productIndex) in list" :key="productIndex">
			<view class="bigListBox twoListBox">
				<view class="oneTitle" style="height:80rpx;line-height: 80rpx;">
					<view style="display:flex">
						<view style="display:flex" :case_cat_id="product.case_id">
							<view style="font-weight: 500;color:#AEB1B8">{{product.title}}</view>
						</view>
						<view class="pop-rightTitle">
							<view class="rightTitle mr-12" style="width: 180rpx;">
								{{product.num}}
							</view>
							<view class="rightTitle" style="width: 220rpx;">
								{{product.price}}
							</view>
						</view>
					</view>
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		props: {
			list: {
				type: Array,
				default: () => {
					return []
				}
			},
			type: {
				type: [Number, String],
				default: ''
			}
		},
		data() {
			return {
	
			}
		},
		methods: {
		}
	}
</script>

<style>
</style>

 

getList 请求数据,遍历定义childObj ,JSON.parse JSON.stringify 对源数据进行深拷贝处理,

调用initData进行递归处理。采用递归方式对数据进行拆分赋值,减少setData数据导致白屏问题。

(1000可根据实际场景修改)文章来源地址https://www.toymoban.com/news/detail-619599.html

			getList() {
				ReceivableAuditShow({
					order_id: this.id
				}).then(res => {
					this.loading = true
					res.sale_order_product_list.map(item => {
						item.childObj = {}
						return item;
					})
					this.list = res;
					this.dataList = JSON.parse(JSON.stringify(res.sale_order_product_list))
					this.initData(0, 0)
					this.sum_num = res.sum_num
					this.sum_money = res.sum_money
				})
			},
			initData(pIndex, index) {
				if (this.dataList.length === pIndex) return
				this.list.sale_order_product_list[pIndex].childObj[index] = this.dataList[pIndex].child.slice(index, index + 1000)
				let i = index + 1000
				if (i >= this.dataList[pIndex].child.length) i = 0
				this.initData(i === 0 ? pIndex + 1 : pIndex, i)
			},

到了这里,关于uni app 微信小程序 一次性加载几千条数据优化处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 如何将bootloader和APP程序一次性烧录到单片机中

      在做单片机的IAP升级时,通常需要两个程序,一个bootloader程序,一个app程序。首先将bootloader程序烧写到单片机中,然后通过串口将app程序写入到单片机内容,在平时学习和测试的时候这种方法没啥问题,但是如果产品需要量产,每次少些程序的时候都有通过这种方法的

    2024年02月09日
    浏览(55)
  • uniapp - 微信小程序平台模板消息订阅功能,唤起订阅模板消息弹框、微信公众号向用户发送 “服务通知“ 实现全过程示例代码,支持一次性订阅与永久性订阅(注释详细,一键复制开箱即用)

    本博客实现了uniapp微信小程序端,详细实现公众号订阅通知模板消息完整示例源码,一次性订阅与永久订阅均可,注释详细新手一看就懂! 效果如图所示,uniapp编译的微信小程序内点击按钮后,唤起模板消息订阅申请弹框,后续微信内会收到通知。

    2024年02月13日
    浏览(67)
  • uniapp 一次性上传多条视频 u-upload accept=“video“ uni.chooseMedia uni.uploadFile

    文档地址 uview 2.0 Upload 上传组件 html script 文档地址 video uni.chooseMedia uni.uploadFile html script css

    2024年02月19日
    浏览(59)
  • 小程序一次性订阅消息进行长期推送方案

    由于小程序长期只针对向政务民生、医疗、交通、金融、教育等线下公共服务开放,且目前的项目不符合这些主类目要求,所以只能从一次性模板进行下手。 一次性模板指的是用户授权一次,可以推送一次消息,所以一次性模板想要长期推送我用的方案是在点击的地方都增加

    2024年02月12日
    浏览(41)
  • uni-app 使用webview加载H5打开微信小程序

    最近公司有个需求要求在app里点击一个功能打开小程序,并且关闭小程序回到app,模仿平安保险app。 毕竟我也是刚学习uni-app,找了很多资料,找到了一个天天外链的网站可以生成一个小程序的链接,使用uni的webview去加载这个链接,很好,需求满足,但是收费,那能不能自己

    2023年04月18日
    浏览(75)
  • 基于小程序的一次性环保餐具销售系统+springboot+vue.js附带文章和源代码设计说明文档ppt

    🌞 博主介绍 :✌CSDN特邀作者、985计算机专业毕业、某互联网大厂高级全栈开发程序员、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导、面试辅导、简

    2024年02月20日
    浏览(62)
  • python 一次性删除列表(list)的空白元素(空内容) 或者 一次性删除列表(list)中的指定元素

    看看下述代码: 输出: 当你遇见这种情况,有哪些方法来去除里面的空内容呢(即 \\\'\\\' )? 1.1 删除空内容(方法一) : 输出: 1.2 删除空内容(方法二) : 需要 配合 lambda 表达式 一起使用! 输出: 2.3 删除指定内容 : 输出: 注 :此方法既可以删除空元素,也可以删除指

    2024年02月03日
    浏览(94)
  • 《一次性分割一切》阅读笔记

    目录 0 体验 1 摘要 2 十个问题 参考文献 体验地址 :SEEM - a Hugging Face Space by xdecoder 体验结果 : 将哈士奇和汽车人从图片中分割出来。 尽管对于交互式人工智能系统的需求不断增长,但在视觉理解(例如分割)中的人工智能交互方面,很少有全面的研究。本文受到基于提示的

    2024年02月01日
    浏览(89)
  • 公众号一次性订阅消息

    洛塔服务号回复007获取代码。 之前发布通知,要用订阅通知替代一次性订阅消息,不知道是被骂的太惨还是技术原因,一次性订阅消息还是一直能用。 和模板消息不同的是,一次性订阅消息无需用户关注公众号,但是必须用户点击同意发送才能接收消息。 模板消息:需要关

    2024年02月09日
    浏览(75)
  • 一次性打包学透 Spring

    不知从何时开始,Spring 这个词开始频繁地出现在 Java 服务端开发者的日常工作中,很多 Java 开发者从工作的第一天开始就在使用 Spring Framework,甚至有人调侃“不会 Spring 都不好意思自称是个 Java 开发者”。 之所以出现这种局面,源于 Spring 是一个极为优秀的一站式集成框架

    2023年04月19日
    浏览(64)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包