欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue-virtual-scroll-list虛擬組件實(shí)現(xiàn)思路詳解

 更新時(shí)間:2023年02月18日 11:59:06   作者:砂糖橘加鹽  
這篇文章主要給大家介紹了關(guān)于vue-virtual-scroll-list虛擬組件實(shí)現(xiàn)思路的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

組件性能問題

在數(shù)據(jù)量大的時(shí)候,cascader/tree這類的列表加載緩慢,滾動(dòng)卡頓,操作延遲。

下圖是2000條數(shù)據(jù)的時(shí)候:

密密麻麻的節(jié)點(diǎn):

絢麗多芬的火焰圖:

從上面的火焰圖可知卡頓的click時(shí)間,渲染時(shí)間的非常的嚴(yán)重。

影響cascader/tree這類組件性能的主要原因:

  • 一次性加載出所有的dom節(jié)點(diǎn),導(dǎo)致首次加載緩慢
  • 組件中有一個(gè)computed屬性:checkedValue。這個(gè)變量觸發(fā)任何一個(gè)click事件的時(shí)候,都會(huì)改變這個(gè)變量。cascader源碼當(dāng)中,會(huì)因?yàn)檫@個(gè)值的改變觸發(fā)render方法,導(dǎo)致JS執(zhí)行時(shí)間、重繪和重排的時(shí)間都很長。

解決方案

既然是大數(shù)據(jù)量導(dǎo)致的,那么我們就控制一次性加載的數(shù)據(jù),這個(gè)時(shí)候自然想到使用虛擬滾動(dòng)。github搜索下,搜索到了vue-virtual-scroll-list組件。

npm install vue-virtual-scroll-list --save

具體用法可以自行查看官網(wǎng)。主要是下面三個(gè)參數(shù):

  • data-key: 配置循環(huán)的組件子組件的唯一ID
  • data-source: 數(shù)組
  • data-component: 待循環(huán)的組件

個(gè)人更加喜歡像下面這樣的組件設(shè)計(jì):

<el-select v-model="value" placeholder="Select">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value"
      :disabled="item.disabled"
    />
</el-select>

顯性的子組件和v-for,以及直觀的key值。

優(yōu)化后的表現(xiàn)

結(jié)果顯而易見。火焰圖不夠紅火了!不再卡頓。

實(shí)現(xiàn)原理

那么它的實(shí)現(xiàn)原理是什么呢?

下面是一張3d圖,表示了數(shù)據(jù)實(shí)際展示的范圍。

由此可知,根據(jù)滾動(dòng)容器元素的可視窗口來渲染長列表中的部分?jǐn)?shù)據(jù)。利用視差和錯(cuò)覺制作一份出一份“虛擬”列表,一個(gè)虛擬列表由三部分組成:

  • 視窗口
  • 虛擬數(shù)據(jù)列表(數(shù)據(jù)展示)
  • 滾動(dòng)占位區(qū)塊(底部滾動(dòng)區(qū)

它的實(shí)現(xiàn)思路:

根據(jù)該圖可以得到下面這樣的思維導(dǎo)圖:

總結(jié)

到此這篇關(guān)于vue-virtual-scroll-list虛擬組件實(shí)現(xiàn)思路的文章就介紹到這了,更多相關(guān)vue-virtual-scroll-list虛擬組件實(shí)現(xiàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue2.0項(xiàng)目集成Cesium的實(shí)現(xiàn)方法

    vue2.0項(xiàng)目集成Cesium的實(shí)現(xiàn)方法

    這篇文章主要介紹了vue2.0項(xiàng)目集成Cesium的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 使用 Vue 3 的 createApp方法初始化應(yīng)用的基本步驟

    使用 Vue 3 的 createApp方法初始化應(yīng)用的基本步驟

    createApp 是 Vue 3 引入的全局 API,用于創(chuàng)建一個(gè)應(yīng)用實(shí)例,這篇文章主要介紹了如何使用 Vue 3 的 createApp方法初始化應(yīng)用,通過 createApp 方法,我們從 Vue 3 的基本初始化開始,擴(kuò)展到插件的應(yīng)用、多個(gè)應(yīng)用實(shí)例的創(chuàng)建等,需要的朋友可以參考下
    2024-05-05
  • vue+express生成token方式

    vue+express生成token方式

    這篇文章主要介紹了vue+express生成token方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue3.0 的 Composition API 的使用示例

    vue3.0 的 Composition API 的使用示例

    這篇文章主要介紹了vue3.0 的 Composition API 的使用示例,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下
    2020-10-10
  • vue實(shí)現(xiàn)全局組件自動(dòng)注冊(cè),無需再單獨(dú)引用

    vue實(shí)現(xiàn)全局組件自動(dòng)注冊(cè),無需再單獨(dú)引用

    這篇文章主要介紹了vue實(shí)現(xiàn)全局組件自動(dòng)注冊(cè),無需再單獨(dú)引用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue布置導(dǎo)航守衛(wèi)獲取用戶信息

    Vue布置導(dǎo)航守衛(wèi)獲取用戶信息

    這篇文章主要為大家介紹了Vue布置導(dǎo)航守衛(wèi)獲取用戶信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 深入理解vue中的$set

    深入理解vue中的$set

    這篇文章主要介紹了深入理解vue中的$set,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Vue的路由及路由鉤子函數(shù)的實(shí)現(xiàn)

    Vue的路由及路由鉤子函數(shù)的實(shí)現(xiàn)

    這篇文章主要介紹了Vue的路由及路由鉤子函數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 淺談vue中改elementUI默認(rèn)樣式引發(fā)的static與assets的區(qū)別

    淺談vue中改elementUI默認(rèn)樣式引發(fā)的static與assets的區(qū)別

    下面小編就為大家分享一篇淺談vue中改elementUI默認(rèn)樣式引發(fā)的static 與assets的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 程序員應(yīng)該知道的vuex冷門小技巧(超好用)

    程序員應(yīng)該知道的vuex冷門小技巧(超好用)

    Vue基本用法很容易上手,但是有很多優(yōu)化的寫法你就不一定知道了,下面這篇文章主要給大家介紹了關(guān)于程序員應(yīng)該知道的vuex冷門小技巧的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評(píng)論