Vue中v for為什麼使 key

2021-10-08 09:27:22 字數 414 閱讀 8829

我們需要使用key來給每個節點做乙個唯一標識,diff演算法就可以正確的識別此節點,找到正確的位置區插入新的節點。

加key主要不是為了效能,主要是為了區分兩個 vnode 節點。比如乙個列表,增加其中一項,如果不加 key 區分,增加後新舊 vnode 對比就會出現 bug。因為列表元素 dom 結構相同,vue 會把原本不相同的 vnode 認為是 samevnode,導致 bug。

說到底,key的作用就是更新元件時判斷兩個節點是否相同。相同就復用,不相同就刪除舊的建立新的。在渲染簡單的無狀態元件時,如果不新增key元件預設都是就地復用,不會刪除新增節點,只是改變列表項中的文字值,要知道節點操作是十分耗費效能的。而新增了key之後,當對比內容不一致時,就會認為是兩個節點,會先刪除掉舊節點,然後新增新節點。

v for中為什麼要加key,原理是什麼

原理 1.vue實現了一套虛擬dom,使我們可以不直接操作dom元素,只運算元據就可以重新渲染頁面,而隱藏在背後的原理是高效的diff演算法 2.當頁面資料發生改變,diff演算法只會比較同一層級的節點 3.如果節點型別不同,直接乾掉前面的節點,再建立並新增新的節點,不會再比較這個節點後面的子節點 ...

Vue的 v for 中 key 有什麼用

我們知道,vue和react都實現了一套虛擬dom,使我們可以不直接操作dom元素,只運算元據便可以重新渲染頁面。而隱藏在背後的原理便是其高效的diff演算法。vue和react的虛擬dom的diff演算法大致相同,其核心是基於兩個簡單的假設 1.兩個相同的元件產生類似的dom結構,不同的元件產生不...

為什麼v for迴圈時要寫上key

當 vue.js 用 v for 正在更新已渲染過的元素列表時,它預設用 就地復用 策略。如果資料項的順序被改變,vue 將不會移動 dom 元素來匹配資料項的順序,而是簡單復用此處每個元素,並且確保它在特定索引下顯示已被渲染過的每個元素。這個類似 vue 1.x 的 track by index ...