03-vue中key的作用和工作原理


 
         
1 <!DOCTYPE html> <html> <head><title>03-key的作用及原理?</title> </head> <body><div id="demo"> <p v-for="item in items" :key="item">{{item}}</p> </div> <script src="../../dist/vue.js"></script> <script> // 創建實例 const app = new Vue({ el: '#demo', data: { items: ['a', 'b', 'c', 'd', 'e'] }, mounted () { setTimeout(() => { this.items.splice(2, 0, 'f') }, 2000); }, }); </script> </body> </html>
 
         

 

 
 目標,c之前插入一個f

 

 

 如果不使用key

 

 

如果使用key

// 首次循環patch A
A B C D E
A B F C D E
// 第2次循環patch B
B C D E
B F C D E
// 第3次循環patch E
C D E
F C D E
// 第4次循環patch D
C D
F C D
// 第5次循環patch C
C
F C
// oldCh全部處理結束,newCh中剩下的F,創建F並插入到C前面
 
結論 :
1. key的作用主要是為了高效的更新虛擬DOM,其原理是vue在patch過程中 會執行patch vnode,patch vnode的過程中會執行updateChildren這個方法【patch.js中 重排算法】。 他會去更新兩個新舊的子元素。在這個過程中。
通過key可以精准判斷兩 個節點是否是同一個,從而避免頻繁更新不同元素,使得整個patch過程更加高效,減少DOM操 作量,提高性能。  
2. 另外,若不設置key還可能在列表更新時引發一些隱蔽的bug【比如說有一行不應該更新的,但是更新了。】
3. vue中在使用相同標簽名元素的過渡切換時,也會使用到key屬性,其目的也是為了讓vue可以區分
它們,否則vue只會替換其內部屬性而不會觸發過渡效果。


免責聲明!

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



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