使用 v-once 和 v-memo 指令來提升性能

本文已整理到 Github鲁森,地址 ?? blog植捎。

如果我的內(nèi)容幫助到了您芽狗,歡迎點個 Star ?????? 鼓勵鼓勵 :) ~~

我希望我的內(nèi)容可以幫助你±鹜祝現(xiàn)在我專注于前端領(lǐng)域咸这,但我也將分享我在有限的時間內(nèi)看到和感受到的東西夷恍。


優(yōu)化渲染的一種極其簡單的方法是僅重新渲染所需要的內(nèi)容。

每當(dāng)組件的數(shù)據(jù)發(fā)生更改時媳维,該組件及其子組件將重新渲染酿雪,Vue 中的 v-oncev-memo 指令可以減少這種不必要的渲染遏暴。

v-once

v-once 指令僅渲染元素/組件一次。初始渲染后指黎,該元素及其所有子元素將被視為靜態(tài)內(nèi)容朋凉。

<!-- 單個元素 -->
<span v-once>{{ msg }}</span>
<!-- 有子元素的元素 -->
<div v-once>
  <p>{{ msg }}</p>
</div>
<!-- 組件 -->
<my-component v-once :comment="msg"></my-component>
<!-- `v-for` 指令 -->
<ul>
  <li v-for="i in list" v-once>{{ i }}</li>
</ul>

當(dāng)與 v-ifv-show 一起使用時,一旦我們的元素被渲染一次醋安,v-ifv-show 將不再適用杂彭,這意味著如果它在第一次渲染時可見,它將始終可見吓揪。如果它是隱藏的亲怠,它將永遠(yuǎn)是隱藏的。

<template>
  <p v-once v-if="show">{{ msg }}</p>
  <el-button @click="show = !show">切換</el-button>
</template>

<script setup>
import { ref } from 'vue'

const msg = ref('Hello')
const show = ref(true)
</script>

以上 p 標(biāo)簽將始終可見柠辞。

v-memo

v-memo 是 Vue 3.2 新增的一個指令团秽。它接受一個依賴數(shù)組,并且只有在數(shù)組中的一個值發(fā)生變化時才會重新渲染钾腺。

<template>
  <p v-memo="[msg]">{{ msg }}</p>
  <el-button @click="msg = 'change msg'">切換</el-button>
</template>

<script setup>
import { ref } from 'vue'

const msg = ref('hello')
</script>

如果傳入一個空的依賴項數(shù)組徙垫,它將與使用 v-once 相同,它永遠(yuǎn)不會重新渲染放棒。

<template>
  <p v-memo="[]">{{ msg }}</p>
  <!-- 等同于  -->
  <p v-once>{{ msg }}</p>

  <el-button @click="msg = 'change msg'">切換</el-button>
</template>

<script setup>
import { ref } from 'vue'

const msg = ref('hello')
</script>

注意姻报,v-memov-for 循環(huán)中不起作用,所以如果我們想用 v-for 記憶一些東西间螟,我們必須把它們放在同一個元素上吴旋。

最后

更多指令相關(guān)內(nèi)容可以查看 Built-in Directives

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厢破,一起剝皮案震驚了整個濱河市荣瑟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摩泪,老刑警劉巖笆焰,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異见坑,居然都是意外死亡嚷掠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門荞驴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來不皆,“玉大人,你說我怎么就攤上這事熊楼∨Γ” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長犬耻。 經(jīng)常有香客問我踩晶,道長,這世上最難降的妖魔是什么枕磁? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任合瓢,我火速辦了婚禮,結(jié)果婚禮上透典,老公的妹妹穿的比我還像新娘晴楔。我一直安慰自己,他們只是感情好峭咒,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布税弃。 她就那樣靜靜地躺著,像睡著了一般凑队。 火紅的嫁衣襯著肌膚如雪则果。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天漩氨,我揣著相機與錄音西壮,去河邊找鬼。 笑死叫惊,一個胖子當(dāng)著我的面吹牛款青,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播霍狰,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抡草,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蔗坯?” 一聲冷哼從身側(cè)響起康震,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宾濒,沒想到半個月后腿短,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡绘梦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年橘忱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谚咬。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹦付,死狀恐怖尚粘,靈堂內(nèi)的尸體忽然破棺而出择卦,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布秉继,位于F島的核電站祈噪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尚辑。R本人自食惡果不足惜辑鲤,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杠茬。 院中可真熱鬧月褥,春花似錦、人聲如沸瓢喉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栓票。三九已至决左,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間走贪,已是汗流浹背佛猛。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坠狡,地道東北人继找。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像逃沿,于是被迫代替她去往敵國和親码荔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355