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

Vue3.2?新增指令?v-memo?用法詳解(提高性能利器)

 更新時間:2022年09月21日 15:07:32   作者:前端開發(fā)愛好者  
v-memo 接受一個依賴的數組,依賴的數組變化,v-memo 所對應的 DOM 包括子集將會重新渲染,這篇文章主要介紹了Vue3.2?新增指令?v-memo?用法,提高性能的又一利器,需要的朋友可以參考下

哈嘍,大家好 我是xy????‍??。不少同學可能沒有發(fā)現, Vue3.2 新增了一個指令 v-memo, 引入這個指令的目的是幫助大家更好的為我們的應用做性能優(yōu)化??

v-memo 官方定義

  • 「?? 期望的綁定值類型:」any[]

  • 「?? 詳細信息」

    緩存一個模板的子樹。在元素和組件上都可以使用。為了實現緩存,該指令需要傳入一個固定長度的依賴值數組進行比較。如果數組里的每個值都與最后一次的渲染相同,那么整個子樹的更新將被跳過。舉例來說:

  <div v-memo="[valueA, valueB]">
    ...
  </div>

當組件重新渲染,如果 valueAvalueB 都保持不變,這個 <div> 及其子項的所有更新都將被跳過。實際上,甚至虛擬 DOMvnode 創(chuàng)建也將被跳過,因為緩存的子樹副本可以被重新使用。

正確指定緩存數組很重要,否則應該生效的更新可能被跳過。v-memo 傳入空依賴數組 (v-memo="[]") 將與 v-once 效果相同。

我對 v-memo 的理解

簡單理解:v-memo 接受一個依賴的數組,依賴的數組變化,v-memo 所對應的 DOM 包括子集將會重新渲染,反過來說,如果依賴的數組不變,即使整組件重新渲染了,v-memo 所對應的 DOM 包括子集更新都將被跳過

另外,依賴的數組接受一個或多個值 v-memo="[valueOne, valueTwo]",也接受像 v-memo="myValue === true"這樣的表達式。

如果用一個空數組調用 v-memo 相當于使用 v-once,只會渲染該部分組件一次。

與v-for 一起使用

v-memo 僅用于性能至上場景中的微小優(yōu)化,應該很少需要。最常見的情況可能是有助于渲染海量 v-for 列表 (長度超過 1000 的情況):

<div v-for="item in list" :key="item.id" v-memo="[item.id === selected]">
  <p>ID: {{ item.id }} - selected: {{ item.id === selected }}</p>
  <p>...more child nodes</p>
</div>

當組件的 selected 狀態(tài)改變,默認會重新創(chuàng)建大量的 vnode,盡管絕大部分都跟之前是一模一樣的。v-memo 用在這里本質上是在說“只有當該項的被選中狀態(tài)改變時才需要更新”。這使得每個選中狀態(tài)沒有變的項能完全重用之前的 vnode 并跳過差異比較。注意這里 memo 依賴數組中并不需要包含 item.id,因為 Vue 也會根據 item 的 :key 進行判斷。

使用場景

假設后端返回來了 10000 條數據, 前端需要做篩選, 選出符合條件的數據進行展示, 如果沒有符合條件的,則保持上次的搜索結果。

<template>
  <div class="home">
    <input type="text" v-model="value">
    <!-- v-memo中值若不發(fā)生變化,則不會進行更新 -->
    <ul v-memo="[shouldUpdate]">
        <li class="licss" v-for="item in arr" :key="item">
          {{ value }} -- {{ animalType[value] }}
        </li>
    </ul>
  </div>
</template>
<script lang="ts" setup>
import { ref } from "@vue/reactivity"
import { watch } from "@vue/runtime-core"
const arr=new Array(10000)
const animalType={
  'mie':'??',
  'mo':'??',
  'miao':'??',
}
const value=ref('mie')
const shouldUpdate=ref(0)
// 監(jiān)聽value(輸入框中的值)。
// 如果數據發(fā)生變化,并且在animalType對象中存在。試圖進行更新。否則試圖不進行更新。
watch(()=>value.value,()=>{
  if(Object.keys(animalType).includes(value.value)){
    shouldUpdate.value++
  }
})
</script>

vue3.2新增指令v-memo的使用

v-memo的講解

vue3.2中新增了一個性能優(yōu)化的指令;

這個指令就是v-memo;

v-memo:可以做性能優(yōu)化,v-memo中值若不發(fā)生變化,整個子樹的更新會被跳過。

<div v-memo="[valueA, valueB]">
? ...
</div>

當組件重新渲染的時候,如果 valueA 與 valueB 都維持不變。
那么對這個 <div> 以及它的所有子節(jié)點的更新都將被跳過。
事實上,即使是虛擬 DOM 的 VNode 創(chuàng)建也將被跳過,因為子樹的記憶副本可以被重用。
這樣一來,性能將會顯著提升。

場景描述

假設后端返回來了10000條數據。
前端需要做篩選。
選出符合條件的數據進行展示。
如果沒有符合條件的。則保持上次的搜索結果。

v-memo的使用

<template>
? <div class="home">
? ? <input type="text" v-model="jiaoSheng">
? ? <!-- v-memo中值若不發(fā)生變化,則不會進行更新 -->
? ? <ul v-memo="[shouldUpdate]">
? ? ? ? <li class="licss" v-for="item in arr" :key="item">?
? ? ? ? ? {{ jiaoSheng }} -- {{ animalType[jiaoSheng] }}?
? ? ? ? </li>
? ? </ul>
? </div>
</template>
<script lang="ts" setup>
import { ref } from "@vue/reactivity"
import { watch } from "@vue/runtime-core"
const arr=new Array(10000)
const animalType={
? 'mie':'

到此這篇關于Vue3.2 新增指令 v-memo 用法詳解,提高性能的又一利器!??!的文章就介紹到這了,更多相關Vue3.2  v-memo指令內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue?+?qiankun?項目搭建過程

    vue?+?qiankun?項目搭建過程

    這篇文章主要介紹了vue?+?qiankun?項目搭建,首先是通過cli3構建vue2項目,通過qiankun改造主應用,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Vue 3項目如何安裝Element-Plus

    Vue 3項目如何安裝Element-Plus

    Element Plus 是一個基于 Vue 3 的現代前端UI框架,它旨在提升開發(fā)體驗,并為開發(fā)者提供高效、優(yōu)雅的組件,在本文中將詳細介紹如何在 Vue 3 項目中安裝 Element Plus,感興趣的朋友一起看看吧
    2024-07-07
  • 淺談Vue2.0中v-for迭代語法的變化(key、index)

    淺談Vue2.0中v-for迭代語法的變化(key、index)

    下面小編就為大家分享一篇淺談Vue2.0中v-for迭代語法的變化(key、index),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • antdv vue upload自定義上傳結合表單提交方式

    antdv vue upload自定義上傳結合表單提交方式

    這篇文章主要介紹了antdv vue upload自定義上傳結合表單提交方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue實踐---根據不同環(huán)境,自動轉換請求的url地址操作

    vue實踐---根據不同環(huán)境,自動轉換請求的url地址操作

    這篇文章主要介紹了vue實踐---根據不同環(huán)境,自動轉換請求的url地址操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue輪播圖插件vue-awesome-swiper

    vue輪播圖插件vue-awesome-swiper

    這篇文章主要為大家詳細介紹了vue輪播圖插件vue-awesome-swiper,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • vue項目引入antDesignUI組件實現

    vue項目引入antDesignUI組件實現

    本文介紹了如何以Vue引入antDesignUI,主要包括下載安裝、配置和引入組件等步驟,通過本文,讀者可以快速了解antDesignUI在Vue中的應用,感興趣的可以了解一下
    2023-08-08
  • Element-UI中關于table表格的那些騷操作(小結)

    Element-UI中關于table表格的那些騷操作(小結)

    這篇文章主要介紹了Element-UI中關于table表格的那些騷操作(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • vue柱狀進度條圖像的完美實現方案

    vue柱狀進度條圖像的完美實現方案

    本文是對bar進度條實現的2種方案進行分享,第一種是很簡單,純css的實現,第二種是echart的實現。對vue柱狀進度條圖像的實現方案,感興趣的朋友跟隨小編一起看看吧
    2019-08-08
  • Vue使用Tinymce富文本自定義toolbar按鈕的實踐

    Vue使用Tinymce富文本自定義toolbar按鈕的實踐

    本文主要介紹了Vue使用Tinymce富文本自定義toolbar按鈕,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評論

南城县| 阳东县| 华坪县| 壶关县| 兴国县| 利辛县| 肇州县| 孟州市| 三原县| 凤阳县| 马山县| 乌苏市| 疏勒县| 镇安县| 武川县| 汉川市| 武清区| 西畴县| 手机| 临清市| 肃南| 威海市| 江门市| 洪江市| 晋江市| 舟曲县| 武宣县| 惠东县| 崇义县| 武冈市| 松原市| 花莲县| 新河县| 兖州市| 青龙| 甘洛县| 陇南市| 天水市| 寿阳县| 桐庐县| 扬州市|