日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue實(shí)現(xiàn)虛擬列表功能的代碼

瀏覽:28日期:2022-12-25 17:47:22

當(dāng)數(shù)據(jù)量較大(此處設(shè)定為10w),而且要用列表的形式展現(xiàn)給用戶,如果我們不做處理的話,在瀏覽器中渲染10w dom節(jié)點(diǎn),是極其耗費(fèi)時(shí)間的,那我的Macbook air舉例,10w條數(shù)據(jù)渲染出來(lái)到能看到頁(yè)面,需要13秒多(實(shí)際應(yīng)該是10秒左右),如果是用戶的話肯定是不會(huì)等一個(gè)網(wǎng)頁(yè)十幾秒的

vue實(shí)現(xiàn)虛擬列表功能的代碼

我們可以用虛擬列表解決這個(gè)問(wèn)題一步步來(lái)首先看一下效果

vue實(shí)現(xiàn)虛擬列表功能的代碼

這是data中的數(shù)據(jù)

data() { return { list: [], // 賊大的數(shù)組 li: { // 列表項(xiàng)信息 height: 50, }, container: { // 容器信息 height: 500, }, pos: 1, // 第一排顯示的元素的下標(biāo) MAX_NUM: 1, // 在容器內(nèi)最多顯示幾個(gè)列表項(xiàng) timer: null, // 定時(shí)器 carriedOut: true, // 能不能執(zhí)行操作 }; },

然后在mounted中創(chuàng)建一個(gè)賊大的數(shù)組,在調(diào)用test方法計(jì)算第一次的虛擬列表中有哪些

mounted() { // 創(chuàng)建一個(gè)賊大的數(shù)據(jù)數(shù)組 for (let i = 0; i < 100000; i++) { this.list.push(i); } this.test(); },

test方法

test() { // 節(jié)流 if (this.carriedOut) { // 容器跟里面的列表項(xiàng) const { container, li } = this; // 計(jì)算可視區(qū)域最多能顯示多少個(gè)li this.MAX_NUM = Math.ceil(container.height / li.height); // 獲取 overflow:scroll 的元素已滾動(dòng)的高度 let scrollTop = this.$refs.container.scrollTop; // 計(jì)算當(dāng)前處于第一排的元素的下標(biāo) this.pos = Math.round(scrollTop / li.height); // 下方節(jié)流操作 this.carriedOut = false; this.timer = setTimeout(() => { this.carriedOut = true; clearTimeout(this.timer); }, 50); } },

然后是computed

computed: { // 用于渲染在頁(yè)面上的數(shù)組 showList() { // 根據(jù)計(jì)算出來(lái)的 第一排元素的下標(biāo),和最多顯示多少個(gè) 用slice實(shí)現(xiàn)截取數(shù)組 let arr = this.list.slice(this.pos, this.pos + this.MAX_NUM); return arr; }, },

這是html,注意監(jiān)聽了div的scroll事件,并且調(diào)用的是test方法

<div class='virtual-list'> <h1>虛擬列表</h1> <div ref='container' : @scroll='test'> <ul :style='`height:${li.height*list.length}px;padding-top:${li.height*pos}px`'> <li : v-for='item in 100000' :key='item'>{{item}}</li> </ul> </div> </div>

完整源代碼

<template> <div class='virtual-list'> <h1>虛擬列表</h1> <div ref='container' : @scroll='test'> <ul :style='`height:${li.height*list.length}px;padding-top:${li.height*pos}px`'> <li : v-for='item of showList' :key='item'>{{item}}</li> </ul> </div> </div></template><script>export default { data() { return { list: [], // 賊大的數(shù)組 li: { // 列表項(xiàng)信息 height: 50, }, container: { // 容器信息 height: 500, }, pos: 1, // 第一排顯示的元素的下標(biāo) MAX_NUM: 1, // 在容器內(nèi)最多顯示幾個(gè)列表項(xiàng) timer: null, // 定時(shí)器 carriedOut: true, // 能不能執(zhí)行操作 }; }, mounted() { // 創(chuàng)建一個(gè)賊大的數(shù)據(jù)數(shù)組 for (let i = 0; i < 1000; i++) { this.list.push(i); } this.test(); }, computed: { // 用于渲染在頁(yè)面上的數(shù)組 showList() { // 根據(jù)計(jì)算出來(lái)的 第一排元素的下標(biāo),和最多顯示多少個(gè) 用slice實(shí)現(xiàn)截取數(shù)組 let arr = this.list.slice(this.pos, this.pos + this.MAX_NUM); return arr; }, }, methods: { test() { // 節(jié)流 if (this.carriedOut) { // 容器跟里面的列表項(xiàng) const { container, li } = this; // 計(jì)算可視區(qū)域最多能顯示多少個(gè)li this.MAX_NUM = Math.ceil(container.height / li.height); // 獲取 overflow:scroll 的元素已滾動(dòng)的高度 let scrollTop = this.$refs.container.scrollTop; // 計(jì)算當(dāng)前處于第一排的元素的下標(biāo) this.pos = Math.round(scrollTop / li.height); // 下方節(jié)流操作 this.carriedOut = false; this.timer = setTimeout(() => { this.carriedOut = true; clearTimeout(this.timer); }, 50); } }, },};</script><style lang='scss' scoped>.virtual-list { text-align: center; .container { overflow: scroll; border: 1px solid red; }}</style>

到此這篇關(guān)于vue實(shí)現(xiàn)虛擬列表功能的代碼的文章就介紹到這了,更多相關(guān)vue 虛擬列表內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品网站在线看| 91p九色成人| 久久精品99久久久| 中文字幕一区日韩精品| se01亚洲视频| 久久在线免费| 国产视频一区三区| 久久人人88| 九色porny丨国产首页在线| 青草国产精品久久久久久| 国产伦久视频在线观看| 麻豆高清免费国产一区| 欧美性www| 国产日韩免费| 日韩精品久久理论片| 国内亚洲精品| 国产精品久久久久av电视剧| 国际精品欧美精品| 国产精品99一区二区三| 国产精品**亚洲精品| 欧美久久一区二区三区| 青草国产精品久久久久久| 婷婷五月色综合香五月| 青草综合视频| 国产欧美视频在线| 精品美女视频 | 精品国产乱码| 国产精品v一区二区三区| 欧美国产免费| 国产精品videossex久久发布| 精品一区二区三区视频在线播放| 麻豆国产欧美一区二区三区| 欧美91在线| 国产69精品久久| 日本少妇一区| 日韩av在线中文字幕| 成人黄色av| 亚洲成人一区在线观看| 日韩av首页| 一区二区电影| 91福利精品在线观看| 精品一区二区三区四区五区| 六月丁香综合在线视频| 麻豆一区二区三| 久久久久久久久丰满| 欧美69视频| 国产欧美一区二区三区米奇| 精品视频91| 久久国产日本精品| 久久午夜精品| 91成人在线| 久久视频精品| 日韩在线一二三区| 国产探花一区二区| 婷婷精品视频| 亚洲精选成人| 欧美1区二区| 精品国产aⅴ| 亚洲精品2区| 日韩免费精品| 久久天堂精品| 亚洲毛片在线| 激情久久中文字幕| 亚洲制服欧美另类| 欧美成人精品一级| 免费日韩av| 国产精品.xx视频.xxtv| 成人久久久久| 国产精品香蕉| 亚洲网站视频| 激情中国色综合| 亚洲在线成人| 亚洲精品亚洲人成在线观看| 精品欧美视频| 91久久中文| 久久久久久夜| 亚洲精品看片| 久久久久久夜| 日韩av字幕| 国产美女高潮在线| 欧美一区久久| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 91精品韩国| 视频一区二区三区在线| 色网在线免费观看| 亚洲精品在线a| 青青久久av| 麻豆免费精品视频| 亚洲免费在线| 欧美成人基地 | 自拍自偷一区二区三区| 国产精品成人一区二区不卡| 久久香蕉精品| 国产精品美女在线观看直播| 国产精品日韩久久久| 久久久久九九精品影院| 亚洲精品一区二区妖精| 日韩大片在线播放| 日韩在线网址| 国产伦久视频在线观看| 国产精品激情电影| 香蕉久久久久久久av网站| 精品午夜av| 国产精品极品| 久久夜色精品| sm久久捆绑调教精品一区| 免费在线日韩av| 视频国产精品| 伊人精品视频| 91精品国产调教在线观看| 国产香蕉精品| 亚洲视频国产精品| 久久九九国产| 免费在线播放第一区高清av| 亚洲影视一区二区三区| 日韩av首页| 久久精品亚洲人成影院| 国产激情久久| 亚洲精品一级| 亚洲在线观看| 国产伊人精品| 婷婷六月综合| 亚洲天堂免费电影| 日韩电影免费网站| 精品久久美女| 日本不卡的三区四区五区| 蜜臀av在线播放一区二区三区| 成人在线网站| 1024精品一区二区三区| 成人在线丰满少妇av| 7777精品| 国产精品**亚洲精品| 91欧美精品| 夜夜嗨一区二区三区| 美女少妇全过程你懂的久久| 国产精品二区不卡| 欧美少妇精品| www.com.cn成人| 亚洲伦乱视频| 黄色在线观看www| 精品三级久久| 成人av三级| 日韩欧美精品综合| 久久久成人网| 国产拍在线视频| 亚洲香蕉网站| 久久一级电影| 亚洲欧美日本日韩| 国产精品老牛| 丝袜诱惑制服诱惑色一区在线观看| 视频一区视频二区中文字幕| 最新亚洲激情| 亚洲人成网77777色在线播放 | 91麻豆精品激情在线观看最新| 日韩国产在线一| 欧美一级二级视频| 色婷婷色综合| 日韩在线中文| 日韩精品久久久久久久电影99爱| 欧美影院三区| 婷婷六月综合| 久久精品国语| 99视频+国产日韩欧美| 男人天堂欧美日韩| 99精品99| 中文字幕av一区二区三区人| 天堂俺去俺来也www久久婷婷| 91大神在线观看线路一区| 国产精品久久久久久av公交车| 美女在线视频一区| 中文字幕在线看片| 久久高清免费| 亚洲激情国产| 视频一区二区三区入口| 少妇高潮一区二区三区99| 国产一区二区三区四区| 欧美日韩在线观看首页| 激情五月综合网| 国产美女撒尿一区二区| 精品免费av| 欧美性感美女一区二区| 91亚洲无吗| 精品亚洲成人| 亚洲制服少妇| 国产精品久久久久av蜜臀| 国产精品a级| 成人亚洲一区二区| 伊人成人在线视频| 欧美午夜不卡影院在线观看完整版免费| 视频一区二区欧美| 老司机精品视频网| 亚洲欧美日韩国产一区| 国产精品videosex极品| 午夜久久黄色| 老司机免费视频一区二区三区| 日韩午夜黄色| 97国产精品| 亚洲精品福利| 99久久www免费| 国产精品密蕾丝视频下载|