AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

小紅書面試:v-for循環(huán),為什么不建議使用index作為key?

來源: 責(zé)編: 時(shí)間:2024-04-24 17:31:44 132觀看
導(dǎo)讀Hello,大家好,我是 Sunday。最近有個(gè)同學(xué)在小紅書三面的時(shí)候遇到了一個(gè)面試題:“v-for循環(huán),為什么不建議使用index作為key?”按說這個(gè)問題并不復(fù)雜,所以該同學(xué)直接回答:“使用 index 作為 key 可能會(huì)導(dǎo)致渲染性能問題,特別是

Hello,大家好,我是 Sunday。Pi028資訊網(wǎng)——每日最新資訊28at.com

最近有個(gè)同學(xué)在小紅書三面的時(shí)候遇到了一個(gè)面試題:“v-for循環(huán),為什么不建議使用index作為key?”Pi028資訊網(wǎng)——每日最新資訊28at.com

按說這個(gè)問題并不復(fù)雜,所以該同學(xué)直接回答:“使用 index 作為 key 可能會(huì)導(dǎo)致渲染性能問題,特別是數(shù)據(jù)源使用了 unshift 將數(shù)據(jù)添加到頭部時(shí),會(huì)導(dǎo)致 index 被重新規(guī)劃,從而導(dǎo)致重新渲染。”Pi028資訊網(wǎng)——每日最新資訊28at.com

然后面試官繼續(xù)追問:“為什么 index 變化了就會(huì)導(dǎo)致 dom 重新渲染?它的渲染機(jī)制是什么?”Pi028資訊網(wǎng)——每日最新資訊28at.com

額... 吃了沒有看過源碼的虧,導(dǎo)致這個(gè)問題并沒有回答出來(但愿該同學(xué)這次小紅書面試可以順利通過,畢竟都到技術(shù)三面了)。Pi028資訊網(wǎng)——每日最新資訊28at.com

所以,咱們今天就針對(duì)這個(gè)面試題來說一下。Pi028資訊網(wǎng)——每日最新資訊28at.com

v-for 循環(huán)的渲染時(shí)機(jī)

在 Vue 的渲染中,有兩個(gè)比較重要的渲染時(shí)機(jī):渲染、更新。Pi028資訊網(wǎng)——每日最新資訊28at.com

  • 渲染:指的是 DOM 的首次渲染。首次的渲染性能的消耗是固定的。
  • 更新:指的是 數(shù)據(jù)變化后影響到的視圖變化,所謂的性能問題,主要就集中在這里。

我們以這段代碼為例,以下代碼表示的就是一段 更新 的邏輯:Pi028資訊網(wǎng)——每日最新資訊28at.com

<template> <div>  <ul>   <li v-for="(item, index) in list" :key="index">{{ item }}</li>  </ul>  <button @click="change">change</button> </div></template><script setup>const list = ref([1, 2, 3])const change = () => { list.value = [3, 2, 1]}</script>

如果我們把 [1, 2, 3] 作為一組 dom,把 [3, 2, 1] 作為另外一組 dom,那么 dom 由 [1, 2, 3] 變成 [3, 2, 1] 的過程就是 DOM 更新。Pi028資訊網(wǎng)——每日最新資訊28at.com

key 在渲染中的作用

同時(shí),我們需要注意:針對(duì)于 v-for 的 dom 更新,一定是:兩組 dom 對(duì)比發(fā)生的變化。Pi028資訊網(wǎng)——每日最新資訊28at.com

而在 vue 中,一旦兩組 dom 對(duì)比更新,那么就會(huì)觸發(fā) diff 算法 的邏輯,而在 diff 中有這樣一段 vue 的源代碼 isSameVNodeType:Pi028資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pi028資訊網(wǎng)——每日最新資訊28at.com

這段代碼是用來判斷 兩個(gè) DOM 是否相等的。Pi028資訊網(wǎng)——每日最新資訊28at.com

它的判斷條件有兩個(gè):Pi028資訊網(wǎng)——每日最新資訊28at.com

  1. type:表示當(dāng)前 dom 的類型,比如:li、div、p 等不同標(biāo)簽名
  2. key:v-for 循環(huán)中綁定的 key 值

那么由此我們就可以知道:在 vue 中,通過 type + key 兩個(gè)屬性來判斷 dom 是否相等。Pi028資訊網(wǎng)——每日最新資訊28at.com

如果條件滿足(isSameVNodeType 返回 true),那么就不會(huì)重新渲染 dom,從而可以 提升性能Pi028資訊網(wǎng)——每日最新資訊28at.com

index 為什么會(huì)影響性能?

根據(jù)上面的內(nèi)容,我們可以知道:在 type 不變的前提下,key 就決定了 dom 是否要重新渲染。Pi028資訊網(wǎng)——每日最新資訊28at.com

假如,我們使用 index 作為 key,同時(shí)使用 unshift 方法為數(shù)組添加了一個(gè)新的元素,那么所有的 index 都會(huì)發(fā)生變化,從而導(dǎo)致:isSameVNodeType 返回 false,即:所有的 dom 全部重新渲染 從而影響性能Pi028資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-85223-0.html小紅書面試:v-for循環(huán),為什么不建議使用index作為key?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 十個(gè)每個(gè)程序員都應(yīng)該知道的JavaScript技巧

下一篇: 大白話講解Rust中令人頭痛的“所有權(quán)”

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 石頭智能洗地機(jī)A10 Plus體驗(yàn):雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請(qǐng)假懶人而生的石頭科技在近日又帶來了自己的全新旗艦新品,石頭智能洗地機(jī)A10 Plus。從這個(gè)產(chǎn)品名上就不難看出,這次石頭推出的并不是常見的掃地機(jī)器
  • 石頭自清潔掃拖機(jī)器人G10S評(píng)測:多年黑科技集大成之作 懶人終極福音

    科技圈經(jīng)常能看到一個(gè)詞叫“縫合怪”,用來形容那些把好多功能或者外觀結(jié)合在一起的產(chǎn)品,通常這樣的詞是貶義詞,但如果真的是產(chǎn)品縫合的好、縫合的實(shí)用的話,那它就成了中性詞,今
  • 5月iOS設(shè)備性能榜:M1 M2依舊是榜單前五

    和上個(gè)月一樣,沒有新品發(fā)布的iOS設(shè)備性能榜的上榜設(shè)備并沒有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動(dòng),剛剛開始的蘋果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優(yōu)惠,到手價(jià)12999元,比發(fā)布價(jià)便宜了7000元,在大屏電視市場開卷。據(jù)了解,Redmi MAX 100
  • K6:面向開發(fā)人員的現(xiàn)代負(fù)載測試工具

    K6 是一個(gè)開源負(fù)載測試工具,可以輕松編寫、運(yùn)行和分析性能測試。它建立在 Go 和 JavaScript 之上,它被設(shè)計(jì)為功能強(qiáng)大、可擴(kuò)展且易于使用。k6 可用于測試各種應(yīng)用程序,包括 Web
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個(gè)大新聞是Meta AI推出了新的開源授權(quán)的大型語言模型Llama 2。這是一項(xiàng)非常重要的進(jìn)展:Llama 2可免費(fèi)用于研究和商業(yè)用途。(幾小時(shí)前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為Lla
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來源:價(jià)值研究所 作者:Hernanderz&ldquo;難道就因?yàn)樽约旱囊粋€(gè)產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運(yùn)營上的問題,選擇逃避了嗎?&rdquo;這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運(yùn)營研究社作者 | 張知白編輯 | 楊佩汶設(shè)計(jì) | 晏談夢(mèng)潔這個(gè)暑期,旅游賽道徹底火了:有的「地方」火了&mdash;&mdash;貴州村超旅游收入 1 個(gè)月超過 12 億;有的「博主」火了&m
  • OPPO K11評(píng)測:旗艦級(jí)IMX890加持 2000元檔最強(qiáng)影像手機(jī)

    【Techweb評(píng)測】中端機(jī)型用戶群體巨大,占了中國目前手機(jī)市場的大頭,一直以來都是各手機(jī)品牌的“必爭之地”,其中OPPO K系列機(jī)型一直以來都以高品質(zhì)、
Top