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

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

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

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

v-memo 官方定義

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

  • 「?? 詳細(xì)信息」

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

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

當(dāng)組件重新渲染,如果 valueAvalueB 都保持不變,這個(gè) <div> 及其子項(xiàng)的所有更新都將被跳過。實(shí)際上,甚至虛擬 DOMvnode 創(chuàng)建也將被跳過,因?yàn)榫彺娴淖訕涓北究梢员恢匦率褂谩?/p>

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

我對(duì) v-memo 的理解

簡(jiǎn)單理解:v-memo 接受一個(gè)依賴的數(shù)組,依賴的數(shù)組變化,v-memo 所對(duì)應(yīng)的 DOM 包括子集將會(huì)重新渲染,反過來說,如果依賴的數(shù)組不變,即使整組件重新渲染了,v-memo 所對(duì)應(yīng)的 DOM 包括子集更新都將被跳過

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

如果用一個(gè)空數(shù)組調(diào)用 v-memo 相當(dāng)于使用 v-once,只會(huì)渲染該部分組件一次

與v-for 一起使用

v-memo 僅用于性能至上場(chǎng)景中的微小優(yōu)化,應(yīng)該很少需要。最常見的情況可能是有助于渲染海量 v-for 列表 (長(zhǎng)度超過 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>

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

使用場(chǎng)景

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

<template>
  <div class="home">
    <input type="text" v-model="value">
    <!-- v-memo中值若不發(fā)生變化,則不會(huì)進(jìn)行更新 -->
    <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(輸入框中的值)。
// 如果數(shù)據(jù)發(fā)生變化,并且在animalType對(duì)象中存在。試圖進(jìn)行更新。否則試圖不進(jìn)行更新。
watch(()=>value.value,()=>{
  if(Object.keys(animalType).includes(value.value)){
    shouldUpdate.value++
  }
})
</script>

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

v-memo的講解

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

這個(gè)指令就是v-memo;

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

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

當(dāng)組件重新渲染的時(shí)候,如果 valueA 與 valueB 都維持不變。
那么對(duì)這個(gè) <div> 以及它的所有子節(jié)點(diǎn)的更新都將被跳過。
事實(shí)上,即使是虛擬 DOM 的 VNode 創(chuàng)建也將被跳過,因?yàn)樽訕涞挠洃浉北究梢员恢赜谩?br />這樣一來,性能將會(huì)顯著提升。

場(chǎng)景描述

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

v-memo的使用

<template>
? <div class="home">
? ? <input type="text" v-model="jiaoSheng">
? ? <!-- v-memo中值若不發(fā)生變化,則不會(huì)進(jìn)行更新 -->
? ? <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':'

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

相關(guān)文章

  • vue?+?qiankun?項(xiàng)目搭建過程

    vue?+?qiankun?項(xiàng)目搭建過程

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

    Vue 3項(xiàng)目如何安裝Element-Plus

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

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

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

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

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

    vue實(shí)踐---根據(jù)不同環(huán)境,自動(dòng)轉(zhuǎn)換請(qǐng)求的url地址操作

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

    vue輪播圖插件vue-awesome-swiper

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

    vue項(xiàng)目引入antDesignUI組件實(shí)現(xiàn)

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

    Element-UI中關(guān)于table表格的那些騷操作(小結(jié))

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

    vue柱狀進(jìn)度條圖像的完美實(shí)現(xiàn)方案

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

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

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

最新評(píng)論

榆社县| 沽源县| 玛纳斯县| 米泉市| 宕昌县| 通化县| 沽源县| 鄂伦春自治旗| 沙田区| 陕西省| 甘洛县| 齐河县| 右玉县| 炎陵县| 元阳县| 宜宾市| 利辛县| 防城港市| 溧水县| 若尔盖县| 马尔康县| 鄂托克前旗| 巴里| 澄江县| 彰化县| 娄烦县| 鲁山县| 将乐县| 巴东县| 涟源市| 隆子县| 三原县| 奎屯市| 洛隆县| 藁城市| 南丹县| 融水| 石嘴山市| 伊宁市| 济源市| 依兰县|