最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

組件性能問題

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

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

密密麻麻的節(jié)點:

絢麗多芬的火焰圖:

從上面的火焰圖可知卡頓的click時間,渲染時間的非常的嚴重。

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

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

解決方案

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

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

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

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

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

<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é)果顯而易見?;鹧鎴D不夠紅火了!不再卡頓。

實現(xiàn)原理

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • vue3實現(xiàn)tabs導(dǎo)航欄點擊每個導(dǎo)航項有下劃線動畫效果

    vue3實現(xiàn)tabs導(dǎo)航欄點擊每個導(dǎo)航項有下劃線動畫效果

    這篇文章主要介紹了vue3實現(xiàn)tabs導(dǎo)航欄點擊每個導(dǎo)航項有下劃線動畫效果,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • vue-calendar-component 封裝多日期選擇組件的實例代碼

    vue-calendar-component 封裝多日期選擇組件的實例代碼

    這篇文章主要介紹了vue-calendar-component 封裝多日期選擇組件,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • vue中EventBus的使用教程詳解

    vue中EventBus的使用教程詳解

    在Vue中,使用EventBus可以實現(xiàn)組件間的通信,如何使用EventBus??都需要做哪些配置呢?他的注意事項是什么呢?下面就跟隨小編一起學(xué)習(xí)一下吧
    2024-02-02
  • 教你如何在 Nuxt 3 中使用 wavesurfer.js

    教你如何在 Nuxt 3 中使用 wavesurfer.js

    這篇文章主要介紹了如何在 Nuxt 3 中使用 wavesurfer.js,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • Vuei18n 在數(shù)組中的使用方式

    Vuei18n 在數(shù)組中的使用方式

    這篇文章主要介紹了Vuei18n 在數(shù)組中的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue3清空reactive的四種方式

    vue3清空reactive的四種方式

    本文主要介紹了vue3清空reactive的四種方式,包含使用?Object.assign,使用?Object.keys?和?for...in?循環(huán),使用?delete?操作符和重新賦值4種,感興趣的可以了解一下
    2024-03-03
  • vue ajax 攔截原理與實現(xiàn)方法示例

    vue ajax 攔截原理與實現(xiàn)方法示例

    這篇文章主要介紹了vue ajax 攔截原理與實現(xiàn)方法,結(jié)合實例形式分析了vue.js基于ajax攔截實現(xiàn)無刷新登錄的相關(guān)原理與操作技巧,需要的朋友可以參考下
    2019-11-11
  • vue項目如何刷新當(dāng)前頁面的方法

    vue項目如何刷新當(dāng)前頁面的方法

    這篇文章主要介紹了vue項目如何刷新當(dāng)前頁面的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Vue2.x 的雙向綁定原理及實現(xiàn)

    Vue2.x 的雙向綁定原理及實現(xiàn)

    這篇文章主要介紹了Vue2.x 的雙向綁定原理,Vue 是利用的 Object.defineProperty() 方法進行的數(shù)據(jù)劫持,利用 set、get 來檢測數(shù)據(jù)的讀寫。需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Vue解析帶html標簽的字符串為dom的實例

    Vue解析帶html標簽的字符串為dom的實例

    今天小編就為大家分享一篇Vue解析帶html標簽的字符串為dom的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評論

扎兰屯市| 吉水县| 十堰市| 高清| 泾川县| 安岳县| 临颍县| 泗洪县| 靖边县| 铜陵市| 胶州市| 封开县| 措勤县| 镇宁| 新野县| 马尔康县| 新疆| 筠连县| 甘谷县| 多伦县| 兰考县| 确山县| 江陵县| 连平县| 华容县| 龙川县| 宜兴市| 莆田市| 滦南县| 平利县| 高州市| 开原市| 探索| 汝州市| 行唐县| 平远县| 安图县| 姚安县| 柘城县| 宁陕县| 松阳县|