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

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

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

組件性能問題

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

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

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

絢麗多芬的火焰圖:

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

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

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

解決方案

既然是大數(shù)據(jù)量導致的,那么我們就控制一次性加載的數(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)的組件

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

<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)

結果顯而易見?;鹧鎴D不夠紅火了!不再卡頓。

實現(xiàn)原理

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

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

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

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

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

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

總結

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

相關文章

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

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

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

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

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

    vue中EventBus的使用教程詳解

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

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

    這篇文章主要介紹了如何在 Nuxt 3 中使用 wavesurfer.js,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    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)方法,結合實例形式分析了vue.js基于ajax攔截實現(xiàn)無刷新登錄的相關原理與操作技巧,需要的朋友可以參考下
    2019-11-11
  • vue項目如何刷新當前頁面的方法

    vue項目如何刷新當前頁面的方法

    這篇文章主要介紹了vue項目如何刷新當前頁面的方法,小編覺得挺不錯的,現(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

最新評論

韶山市| 江永县| 娱乐| 文昌市| 肥城市| 景谷| 枣庄市| 桐乡市| 桐乡市| 隆尧县| 沾益县| 广安市| 准格尔旗| 黄石市| 海口市| 余江县| 诸暨市| 无极县| 白朗县| 哈巴河县| 陆河县| 萨嘎县| 兖州市| 资兴市| 舟曲县| 彰化县| 革吉县| 武城县| 江都市| 潼南县| 安宁市| 全南县| 日土县| 鄂伦春自治旗| 图木舒克市| 军事| 青海省| 浦东新区| 闽侯县| 成安县| 炉霍县|