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

Vue中key的原理以及diff算法詳解

 更新時間:2025年04月01日 14:26:02   作者:謙虛且進步  
這篇文章主要介紹了Vue中key的原理以及diff算法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Vue中key的原理以及diff算法

簡介

Vue的key用于在虛擬DOM中標記節(jié)點,方便后面的diff對比算法進行對比,提升效率。

Vue的vm或者vc實例一共管理著3個DOM對象

分別他的模板對應的真實DOM、真實DOM的備份、以及重新生成的新的DOM,后兩個可以看成是虛擬DOM,只要后面兩個DOM的DOM樹的葉子或者節(jié)點不一樣(被指令操作虛擬DOM進行了修改),那么就會通過渲染函數(shù)render重新更新HTML頁面上的真實DOM。

使用列表渲染時

會生成新的節(jié)點,這些節(jié)點不是一開始在模板當中寫的,屬于后來的DOM節(jié)點,所以需要特殊管理。

列表渲染新生成的DOM節(jié)點一般是一棵子DOM樹

使用key可以記錄這棵子樹的根節(jié)點,diff差分算法就是根據(jù)從這個子樹的根節(jié)點開始進行對比,判斷DOM節(jié)點是否發(fā)生變化。

  • 如果發(fā)現(xiàn)key不存在,直接創(chuàng)建新的子樹。
  • 如果key存在,則會對子樹遍歷。但是對于一些在HTML中的真實DOM中存在的內容,比如input框里面的內容,Vue是不知道的,因為Vue只有一開始真實DOM的備份,后面這個HTML頁面上的真實DOM發(fā)生了什么變化Vue是不知道的。這就會導致真實DOM的一部分被替換掉,而另外一部分還是殘留的老的真實DOM。

如果遍歷容器時

使用index作為key,則會出現(xiàn)部分真實DOM殘留的問題。實際開發(fā)中,一般使用獨一無二的index作為key。

總結如下

  • 最好使用每條數(shù)據(jù)的唯一標識作為key,比如id、手機號、身份證號、學號等唯一值
  • 如果不存在對數(shù)組數(shù)據(jù)的逆序添加、逆序刪除等破壞順序的操作,僅用于渲染列表,使用index作為key是沒有問題的

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue使用transition組件動畫效果的實例代碼

    vue使用transition組件動畫效果的實例代碼

    這篇文章主要介紹了vue使用transition組件動畫效果的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 使用Vue3實現(xiàn)在瀏覽器端進行zip文件壓縮

    使用Vue3實現(xiàn)在瀏覽器端進行zip文件壓縮

    在前端開發(fā)中,我們時常需要處理文件上傳和下載的功能,本文主要和大家分享一下如何使用Vue3和JSZip庫在瀏覽器端實現(xiàn)zip文件壓縮,需要的可以參考下
    2024-05-05
  • vue2.0 實現(xiàn)富文本編輯器功能

    vue2.0 實現(xiàn)富文本編輯器功能

    這篇文章主要介紹了vue2.0 實現(xiàn)富文本編輯器功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • vue項目如何刪除無用的依賴詳解

    vue項目如何刪除無用的依賴詳解

    vue是目前非常流行的前端開發(fā)框架,隨著技術的不斷更新,我們也需要更新我們的vue項目,這篇文章主要給大家介紹了關于vue項目如何刪除無用的依賴的相關資料,需要的朋友可以參考下
    2024-09-09
  • 前端Vue中常用rules校驗規(guī)則詳解

    前端Vue中常用rules校驗規(guī)則詳解

    這篇文章主要介紹了前端Vue中常用rules校驗規(guī)則詳解,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 在Vue環(huán)境下利用worker運行interval計時器的步驟

    在Vue環(huán)境下利用worker運行interval計時器的步驟

    這篇文章主要介紹了在Vue環(huán)境下利用worker運行interval計時器的步驟,本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 基于Vue3的打卡計時器實現(xiàn)方案

    基于Vue3的打卡計時器實現(xiàn)方案

    在日常工作和生活中,我們經常需要記錄時間間隔,比如工作打卡、學習時長、項目耗時等,今天我將為大家介紹一個基于Vue3的打卡計時器實現(xiàn)方案,需要的朋友可以參考下
    2026-03-03
  • element修改form的el-input寬度,el-select寬度的方法實現(xiàn)

    element修改form的el-input寬度,el-select寬度的方法實現(xiàn)

    有時候像form表單這樣,頁面的input、select等寬度不一定會是一樣的,可能有些長,有些短,本文就介紹了如何element修改form的el-input寬度,el-select寬度的方法實現(xiàn),感興趣的可以了解一下
    2022-02-02
  • Vue.js中v-bind指令的用法介紹

    Vue.js中v-bind指令的用法介紹

    這篇文章介紹了Vue.js中v-bind指令的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • vant中的toast輕提示實現(xiàn)代碼

    vant中的toast輕提示實現(xiàn)代碼

    這篇文章主要介紹了vant中的toast輕提示實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論

出国| 高尔夫| 施甸县| 五寨县| 京山县| 平江县| 荥阳市| 彩票| 沁水县| 阜康市| 得荣县| 鹿泉市| 荣昌县| 昭平县| 蒲江县| 永平县| 丹江口市| 卢氏县| 霞浦县| 泰兴市| 那曲县| 罗江县| 武安市| 莲花县| 五指山市| 关岭| 九台市| 兴城市| 富裕县| 松原市| 仁怀市| 阳山县| 大方县| 建德市| 保山市| 常州市| 泗洪县| 武穴市| 延边| 奉节县| 大港区|