Vue 中的 key 有什么作用?


  

  key 是為 Vue 中 vnode 的唯一標記,通過這個 key,我們的 diff 操作可以更准確、更快速。Vue 的 diff 過程可以概括為:oldCh 和 newCh 各有兩個頭尾的變量 oldStartIndex、oldEndIndex 和 newStartIndex、newEndIndex,它們會新節點和舊節點會進行兩兩對比,即一共有4種比較方式:newStartIndex 和oldStartIndex 、newEndIndex 和 oldEndIndex 、newStartIndex 和 oldEndIndex 、newEndIndex 和 oldStartIndex,如果以上 4 種比較都沒匹配,如果設置了key,就會用 key 再進行比較,在比較的過程中,遍歷會往中間靠,一旦 StartIdx > EndIdx 表明 oldCh 和 newCh 至少有一個已經遍歷完了,就會結束比較。

所以 Vue 中 key 的作用是:key 是為 Vue 中 vnode 的唯一標記,通過這個 key,我們的 diff 操作可以更准確、更快速

更准確:因為帶 key 就不是就地復用了,在 sameNode 函數 a.key === b.key 對比中可以避免就地復用的情況。所以會更加准確。

更快速:利用 key 的唯一性生成 map 對象來獲取對應節點,比遍歷方式更快

  key的作用主要是為了高效的更新虛擬DOM。另外vue中在使用相同標簽名元素的過渡切換時,也會使用到key屬性,其目的也是為了讓vue可以區分它們。

  不建議用index作為key使用 

    • 一般情況下,只是展示list,沒有太大問題
    • list會動態變化刪除、添加、排序等操作,就會出現錯亂

  小伙伴可以去官網看一下   

  

   

 

 

  以上就是我在網上查閱的key的作用,還有的大佬們的博客寫的詳細的diff算法內容。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM