91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談VUE中演示v-for為什么要加key

發布時間:2020-09-14 20:04:01 來源:腳本之家 閱讀:128 作者:Nanshannan 欄目:web開發

說到這個問題想必要舉個例子了

沒有key

 <div id="app">
  <div>
   <input type="text" v-model="name">
   <button @click="add">添加</button>
  </div>
  <ul>
   <li v-for="(item, i) in list">
    <input type="checkbox"> {{item.name}}
   </li>
  </ul>
<script>
  // 創建 Vue 實例,得到 ViewModel
  var vm = new Vue({
   el: '#app',
   data: {
    name: '',
    newId: 3,
    list: [
     { id: 1, name: '李斯' },
     { id: 2, name: '呂不韋' },
     { id: 3, name: '嬴政' }
    ]
   },
   methods: {
    add() {
     //注意這里是unshift
     this.list.unshift({ id: ++this.newId, name: this.name })
     this.name = ''
    }
   }
  });
 </script>
 </div>

當選中呂不為時,添加楠楠后選中的確是李斯,并不是我們想要的結果,我們想要的是當添加楠楠后,一種選中的是呂不為

淺談VUE中演示v-for為什么要加key

淺談VUE中演示v-for為什么要加key

有key

 <div id="app">
  <div>
   <input type="text" v-model="name">
   <button @click="add">添加</button>
  </div>
  <ul>
   <li v-for="(item, i) in list" :key="item.id">
    <input type="checkbox"> {{item.name}}
   </li>
  </ul>
<script>
  // 創建 Vue 實例,得到 ViewModel
  var vm = new Vue({
   el: '#app',
   data: {
    name: '',
    newId: 3,
    list: [
     { id: 1, name: '李斯' },
     { id: 2, name: '呂不韋' },
     { id: 3, name: '嬴政' }
    ]
   },
   methods: {
    add() {
     //注意這里是unshift
     this.list.unshift({ id: ++this.newId, name: this.name })
     this.name = ''
    }
   }
  });
 </script>
 </div>

同樣當選中呂不為時,添加楠楠后依舊選中的是呂不為。

淺談VUE中演示v-for為什么要加key

淺談VUE中演示v-for為什么要加key

可以簡單的這樣理解:加了key(一定要具有唯一性) id的checkbox跟內容進行了一個關聯。是我們想達到的效果

查過相關文檔,圖例說明很清晰。

vue和react的虛擬DOM的Diff算法大致相同,其核心是基于兩個簡單的假設
首先講一下diff算法的處理方法,對操作前后的dom樹同一層的節點進行對比,一層一層對比,如下圖:

淺談VUE中演示v-for為什么要加key

當某一層有很多相同的節點時,也就是列表節點時,Diff算法的更新過程默認情況下也是遵循以上原則。

比如一下這個情況:

淺談VUE中演示v-for為什么要加key

我們希望可以在B和C之間加一個F,Diff算法默認執行起來是這樣的:

淺談VUE中演示v-for為什么要加key

即把C更新成F,D更新成C,E更新成D,最后再插入E,是不是很沒有效率?
所以我們需要使用key來給每個節點做一個唯一標識,Diff算法就可以正確的識別此節點,找到正確的位置區插入新的節點。

淺談VUE中演示v-for為什么要加key

vue中列表循環需加:key="唯一標識" 唯一標識可以是item里面id index等,因為vue組件高度復用增加Key可以標識組件的唯一性,為了更好地區別各個組件 key的作用主要是為了高效的更新虛擬DOM

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲阜市| 勃利县| 乌兰察布市| 麻城市| 台湾省| 高尔夫| 布尔津县| 宜君县| 沙湾县| 聂荣县| 苍梧县| 曲沃县| 盐津县| 霍邱县| 靖远县| 资阳市| 石城县| 疏勒县| 乐安县| 大竹县| 太仓市| 于都县| 红安县| 六枝特区| 礼泉县| 阿勒泰市| 襄汾县| 香港| 晋城| 中阳县| 和顺县| 长治县| 深泽县| 西充县| 永城市| 岱山县| 天津市| 隆昌县| 白山市| 榆林市| 大石桥市|