国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uniapp 開發(fā)小程序虛擬長(zhǎng)列表萬條數(shù)據(jù)不卡頓

這篇具有很好參考價(jià)值的文章主要介紹了uniapp 開發(fā)小程序虛擬長(zhǎng)列表萬條數(shù)據(jù)不卡頓。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 頁面滾動(dòng)

uniapp 開發(fā)小程序虛擬長(zhǎng)列表萬條數(shù)據(jù)不卡頓

虛擬列表 只對(duì)可見區(qū)域進(jìn)行渲染,對(duì)非可見區(qū)域中的數(shù)據(jù)不渲染或部分渲染,以實(shí)現(xiàn)減少消耗,提高用戶體驗(yàn)的技術(shù)。它是長(zhǎng)列表的一種優(yōu)化方案,性能良好。當(dāng)數(shù)據(jù)體量極大時(shí),使用虛擬列表,可以極大減少節(jié)點(diǎn)的渲染,體驗(yàn)絲滑。

<template>
	<view>			
		<!--height值為所有數(shù)據(jù)總高-->
		<view :style="{height: itemHeight*(listAll.length) + 'px', position: 'relative'}">
			
			<!--可視區(qū)域里所有數(shù)據(jù)的渲染區(qū)域-->
			<view :style="{position: 'absolute', top: top + 'px'}">
				
				<!--單條數(shù)據(jù)渲染區(qū)域-->
				<view class="item" v-for="(item,index) in showList" :key="index" >
					<image src="../../static/01.png" mode="aspectFill" style="height: 100px; width: 100px;"></image>
					{{item}}
				</view>
			</view>
		</view>		
	</view>
</template>

<script>
	export default {    
		data(){
			return{
				listAll: [],  //所有數(shù)據(jù)
				showList: [],  //可視區(qū)域顯示的數(shù)據(jù)				
				itemHeight: 105, //每條數(shù)據(jù)所占高度
				showNum: 10,  //每次加載到可視區(qū)域的數(shù)量,itemHeight X showNum 要大于屏幕高度 ,否則頁面滾動(dòng)不了。
				top: 0, //偏移量
				scrollTop: 0,  //卷起的高度
				startIndex: 0,  //可視區(qū)域第一條數(shù)據(jù)的索引
				endIndex: 0,  //可視區(qū)域最后一條數(shù)據(jù)后面那條數(shù)據(jù)的的索引,因?yàn)楹竺嬉胹lice(start,end)方法取需要的數(shù)據(jù),但是slice規(guī)定end對(duì)應(yīng)數(shù)據(jù)不包含在里面				
			}
		},
		
		/*頁面滾動(dòng)事件*/
		onPageScroll(e) {						
			this.scrollTop = e.scrollTop			
			this.getShowList()			
		},
		
		onLoad() {
			this.getAllList()
			this.getShowList()
		},
		
		methods:{
			//構(gòu)造2萬條數(shù)據(jù)
			getAllList(){
				for(let i=0;i<20000;i++){
					this.listAll.push(`我是第${i}號(hào)佳麗`)
				}				
			},
			
			//計(jì)算可視區(qū)域數(shù)據(jù)
			getShowList(){				
				this.startIndex = Math.floor(this.scrollTop/this.itemHeight);   //可視區(qū)域第一條數(shù)據(jù)的索引
				this.endIndex = this.startIndex + this.showNum;   //可視區(qū)域最后一條數(shù)據(jù)的后面那條數(shù)據(jù)的索引
				this.showList = this.listAll.slice(this.startIndex, this.endIndex)  //可視區(qū)域顯示的數(shù)據(jù),即最后要渲染的數(shù)據(jù)。實(shí)際的數(shù)據(jù)索引是從this.startIndex到this.endIndex-1
				this.top = this.scrollTop - (this.scrollTop % this.itemHeight);  //在這需要獲得一個(gè)可以被itemHeight整除的數(shù)來作為item的偏移量,這樣隨機(jī)滑動(dòng)時(shí)第一條數(shù)據(jù)都是完整顯示的
			}
			
			
		}
		
	}
</script>

<style scoped>	
	.item{
		height:105px;
		padding: 5px;
		color: #666;
		box-sizing: border-box;
	}
</style>

2. 區(qū)域滾動(dòng)

uniapp 開發(fā)小程序虛擬長(zhǎng)列表萬條數(shù)據(jù)不卡頓

可滾動(dòng)視圖區(qū)域 scroll-view 用于區(qū)域滾動(dòng)。需注意在webview渲染的頁面中,區(qū)域滾動(dòng)的性能不及頁面滾動(dòng)。
使用豎向滾動(dòng)時(shí),需要給 一個(gè)固定高度,通過 css 設(shè)置 height;使用橫向滾動(dòng)時(shí),需要給添加white-space: nowrap;樣式。文章來源地址http://www.zghlxwxcb.cn/news/detail-513634.html

<template>
	<view>		
		<scroll-view class="scroll-box" scroll-y="true" @scroll="scrollEvent">
			
			<!--可視區(qū)域里所有數(shù)據(jù)的渲染區(qū)域-->
			<view :style="{position: 'absolute', top: top + 'px'}">
				
				<!--單條數(shù)據(jù)渲染區(qū)域-->
				<view class="item" v-for="(item,index) in showList" :key="index" >
					<image src="../../static/01.png" mode="aspectFill" style="height: 100px; width: 100px;"></image>
					{{item}}
				</view>
			</view>
		</scroll-view>		
	</view>
</template>

<script>
	export default {    
		data(){
			return{
				listAll: [],  //所有數(shù)據(jù)
				showList: [],  //可視區(qū)域顯示的數(shù)據(jù)				
				itemHeight: 105, //每條數(shù)據(jù)所占高度
				showNum: 6,  //每次加載到可視區(qū)域的數(shù)量,itemHeight X showNum 要可視區(qū)域高度 ,否則頁面滾動(dòng)不了。
				top: 0, //偏移量
				scrollTop: 0,  //卷起的高度
				startIndex: 0,  //可視區(qū)域第一條數(shù)據(jù)的索引
				endIndex: 0,  //可視區(qū)域最后一條數(shù)據(jù)后面那條數(shù)據(jù)的的索引,因?yàn)楹竺嬉胹lice(start,end)方法取需要的數(shù)據(jù),但是slice規(guī)定end對(duì)應(yīng)數(shù)據(jù)不包含在里面				
			}
		},
				
		onLoad() {
			this.getAllList()
			this.getShowList()
		},
		
		methods:{
			//構(gòu)造2萬條數(shù)據(jù)
			getAllList(){
				for(let i=0;i<20000;i++){
					this.listAll.push(`我是第${i}號(hào)佳麗`)
				}				
			},
			
			//計(jì)算可視區(qū)域數(shù)據(jù)
			getShowList(){				
				this.startIndex = Math.floor(this.scrollTop/this.itemHeight);   //可視區(qū)域第一條數(shù)據(jù)的索引
				this.endIndex = this.startIndex + this.showNum;   //可視區(qū)域最后一條數(shù)據(jù)的后面那條數(shù)據(jù)的索引
				this.showList = this.listAll.slice(this.startIndex, this.endIndex)  //可視區(qū)域顯示的數(shù)據(jù),即最后要渲染的數(shù)據(jù)。實(shí)際的數(shù)據(jù)索引是從this.startIndex到this.endIndex-1
				this.top = this.scrollTop - (this.scrollTop % this.itemHeight);  //在這需要獲得一個(gè)可以被itemHeight整除的數(shù)來作為item的偏移量,這樣隨機(jī)滑動(dòng)時(shí)第一條數(shù)據(jù)都是完整顯示的
			},
			
			//區(qū)域滾動(dòng)事件
			scrollEvent(e){				
				this.scrollTop = e.detail.scrollTop
				this.getShowList()	
			}
			
			
		}
		
	}
</script>

<style scoped>	
	.item{
		height:105px;
		padding: 5px;
		color: #666;
		box-sizing: border-box;
		
	}
	.scroll-box{
		height: 300px; 
		width: 99%; 
		position: relative; 
		border: 1px solid red;
		margin-top: 100px;
	}
</style>

到了這里,關(guān)于uniapp 開發(fā)小程序虛擬長(zhǎng)列表萬條數(shù)據(jù)不卡頓的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • uniapp開發(fā)小程序-有分類和列表時(shí),進(jìn)入頁面默認(rèn)選中第一個(gè)分類

    uniapp開發(fā)小程序-有分類和列表時(shí),進(jìn)入頁面默認(rèn)選中第一個(gè)分類

    如下圖所示,進(jìn)入該頁面后,默認(rèn)選中第一個(gè)分類,以及第一個(gè)分類下的列表數(shù)據(jù)。 關(guān)鍵代碼: 進(jìn)入頁面時(shí),默認(rèn)調(diào)用分類的接口,在分類接口里做判斷: 完整代碼:

    2024年02月12日
    瀏覽(14)
  • 解決ElementUI列表大數(shù)據(jù)操作卡頓問題

    問題描述 前端UI框架使用的是ElementUI,項(xiàng)目要求數(shù)據(jù)不分頁一個(gè)表格至少要1000條數(shù)據(jù),這時(shí)點(diǎn)擊其他DOM操作,會(huì)出現(xiàn)卡頓的現(xiàn)象。如點(diǎn)擊復(fù)選框。 官網(wǎng)的示例也搞了,超過200行后操作就會(huì)卡很久,比如復(fù)選框 基于elementUI的table,在不修改源碼的情況下支持大數(shù)據(jù)了渲染的場(chǎng)景

    2024年02月11日
    瀏覽(16)
  • uniapp 微信小程序 Picker下拉列表數(shù)據(jù)回顯問題

    uniapp 微信小程序 Picker下拉列表數(shù)據(jù)回顯問題

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

    2024年02月16日
    瀏覽(23)
  • uniapp小程序中使用video視頻播放卡頓

    uniapp小程序中使用video視頻播放卡頓

    問題:在使用uniapp小程序的video視頻播放,視頻已經(jīng)在播放了,但是進(jìn)度條沒走,還是卡頓的狀態(tài)(測(cè)試ios能正常使用,安卓手機(jī)會(huì)出現(xiàn)此問題) 在網(wǎng)上找了很多方法,最多的說是用:custom-cache=\\\"false\\\",試了并沒有效果,看來和我問題不一樣,后來用了個(gè)簡(jiǎn)單粗暴的方法,發(fā)現(xiàn)是有效果的,以下是

    2024年04月11日
    瀏覽(95)
  • vue大數(shù)據(jù)表格上萬條數(shù)據(jù),樹型表格,解決el-table表格數(shù)據(jù)量過大渲染卡死的問題,使用umy-ui的大數(shù)據(jù)表格虛擬表格虛擬滾u-table解決。

    vue大數(shù)據(jù)表格上萬條數(shù)據(jù),樹型表格,解決el-table表格數(shù)據(jù)量過大渲染卡死的問題,使用umy-ui的大數(shù)據(jù)表格虛擬表格虛擬滾u-table解決。

    先看看效果吧,拿實(shí)例說話,直接渲染四萬多條數(shù)據(jù)不分頁,樹形表格可以展開 直接上代碼: 第一步:引入表格組件:自行按照官方文檔引入即可 第二步:具體頁面實(shí)現(xiàn)代碼: 這是HTMl代碼,多的不介紹,基本方法和el-atble沒什么區(qū)別,只是tl-table的基礎(chǔ)上加了幾個(gè)屬性,這

    2024年02月11日
    瀏覽(22)
  • 【uniapp小程序】打印列表UI模板

    【uniapp小程序】打印列表UI模板

    這是一個(gè)云打印項(xiàng)目,首頁查詢接口渲染設(shè)備,設(shè)備是否在線是通過redis進(jìn)行判斷的,當(dāng)設(shè)備在線時(shí)可以通過在線的驅(qū)動(dòng)軟件打印用戶提交的文檔,自動(dòng)處理無需人工干預(yù) 今天主要是分享一下,文件列表界面,由于UI太丑于是我換了下,如圖所示: 框架為uView2.0,代碼如下:

    2024年02月11日
    瀏覽(18)
  • uniapp 微信小程序 城市索引列表

    uniapp 微信小程序 城市索引列表

    最近做的一個(gè)項(xiàng)目需要頻繁用到城市列表切換,切換城市,騰訊地圖雖然有地圖列表,但是效果不是自己項(xiàng)目想要的,于是就結(jié)合結(jié)合uview的IndexList 索引列表重新做了一個(gè)城市列表的頁面 效果圖: ?頁面結(jié)構(gòu):address.vue script代碼: QQMapWX:騰訊地圖sdk cityCode:城市列表處理的數(shù)

    2024年02月07日
    瀏覽(31)
  • 【移動(dòng)端應(yīng)用開發(fā)】 以 uniapp 打包成 APP 或小程序后或 H5 后 IOS(iphoneX 機(jī)型)底部安全區(qū)域適配(避開底部黑條虛擬鍵)

    一、前言 在使用 uniapp 進(jìn)行應(yīng)用開發(fā)時(shí),可能會(huì)遇到應(yīng)用在 iPhone X 等帶有底部安全區(qū)域的機(jī)型上顯示不正常的問題。這是因?yàn)?iPhone X 及之后的機(jī)型采用了全面屏設(shè)計(jì),屏幕底部有一個(gè)黑色的虛擬鍵區(qū)域,俗稱\\\"劉海\\\"或\\\"黑條\\\"。為了避免應(yīng)用內(nèi)容被底部安全區(qū)域遮擋,需要進(jìn)行

    2024年02月19日
    瀏覽(93)
  • 實(shí)現(xiàn)原生微信小程序虛擬列表

    小程序的setData每一次調(diào)用,都會(huì)重新和舊的虛擬dom進(jìn)行diff對(duì)比,如果頁面列表比較大的話,不斷頻繁加載setData,實(shí)際上是非常消耗性能的,所以也是為了解決這個(gè)考慮,我雖然每一次都在使用setData加載數(shù)據(jù),但是setData加載完成的數(shù)據(jù),我并不是直接渲染,而是通過wxml中微

    2024年02月11日
    瀏覽(32)
  • uniapp:聊天消息列表(好友列表+私人單聊)支持App、H5、小程序

    uniapp:聊天消息列表(好友列表+私人單聊)支持App、H5、小程序

    ?? ?? ???江城開朗的豌豆 :個(gè)人主頁 ????個(gè)人專欄? :《 VUE 》?《 javaScript 》 ??? ?個(gè)人網(wǎng)站? :《 江城開朗的豌豆?? 》? ???生活的理想,就是為了理想的生活?! 目錄 ??? 文章簡(jiǎn)介(效果圖展示)???????? ? ???插件傳送門:聊天消息列表 ???? 文章背景

    2024年04月15日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包