v-for中為什么加key


vue中列表循環需加:key="唯一標識" 唯一標識可以是item里面id index等,因為vue組件高度復用增加Key可以標識組件的唯一性,為了更好地區別各個組件 key的作用主要是為了高效的更新虛擬DOM
key可用來唯一標識組件元素,v-for 在更新已渲染過的元素列表是,它默認用“就地復用”策略(如順序表的新增一個元素,將原來該位置及后面的元素都向后移動一位並覆蓋),即假設我們給列表增加一條數據,整個列表都要重新渲染一遍。
核心思想:
1.vue更新已渲染過的元素時,默認使用就地復用策略(如果該元素dom未修改,則復用之前的元素,否則重新渲染這一項),
2. key的作用是唯一標識組件元素,輔助判斷新舊vdom節點在邏輯上是不是同一個對象,是否有更新

vue是通過比對組件自身新舊vdom進行更新的。

key的作用是唯一標識組件元素,輔助判斷新舊vdom節點在邏輯上是不是同一個對象。

比如說數組里插入了一項,這就是很經典的例子。當沒有key時,在某個節點位置插入一個元素,vue會認為不是同一個虛擬dom,會進行更新。如果key唯一標志了組件元素就不回出現這種問題。

提高效率,如果我們給列表增加了一條數據,頁面只渲染了這數據

當Vue用 v-for 正在更新已渲染過的元素列表是,它默認用“就地復用”策略。如果數據項的順序被改變,Vue將不是移動DOM元素來匹配數據項的改變,而是簡單復用此處每個元素,並且確保它在特定索引下顯示已被渲染過的每個元素。

我們都知道,Vue很大的一個特點就是雙向數據綁定,數據一旦改變,那么頁面就渲染新的數據呈現在頁面上。

那么問題來了,對於用v-for渲染的列表數據來說,數據量可能一般很龐大,而且我們經常還要對這個數據進行一些增刪改操作。

假設我們給列表增加一條數據,整個列表都要重新渲染一遍,那不就很費事了。

而key的出現就是盡可能的回避這個問題,提高效率,如果我們給列表增加了一條數據,頁面只渲染了這數據,那不就很完美了。

v-for默認使用就地復用策略,列表數據修改的時候,他會根據key值去判斷某個值是否修改,如果修改,則重新渲染這一項,否則復用之前的元素。

我們經常使用會使用index(即數組的下標)作為key,但其實不推薦怎么使用。

 

 

為了給Vue一個提示,以便它能跟蹤每個節點的身份,從而重用和重新排序現有元素,你需要為每項提供一個唯一 key 屬性。key屬性的類型只能為 string或者number類型。

示例

 

復制代碼
<!--注意:v- for 循環的時候,key屬性只能使用numberstring -->

<!--注意:key使用的時候,必須使用v-bind綁定屬性的形式,指定key的值 -->

<!-- 在組件中,使用 v- for 循環的時候,或者在一些特殊情況中,如果v- for 有問題 必須在使用v- for 的同時,指定唯一的 字符串/數字 類型:key 值-->
<p v-for="item in list" :key="item.id">

   <input type="checkbox"/>

   {{item.id}}--{{item.name}}

</p>
復制代碼

總結

key的作用主要是為了高效的更新虛擬DOM!!!


免責聲明!

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



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