Vue v-for中:key中item.id與Index使用的區(qū)別解析
先說結(jié)論,推薦使用【:key="item.id"】而不是將數(shù)組下標當(dāng)做唯一標識,前者能做到全部復(fù)用
場景:刪除無序列表中的<li>標簽
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>創(chuàng)建一個Vue實例</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script> <link rel="external nofollow" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/mhDoLbDldZc3qpsJHpLogda//BVZbgYuw6kof4u2FrCedxOtgRZDTHgHUhOCVim" crossorigin="anonymous"></script> </head> <body> <div class="container"> <div id="app"> <!-- 事件:做<li>標簽的刪除功能,根據(jù)class的id刪除, 此案例刪除class="3"的標簽 --> <!-- 原代碼 --> <li class="1">1</li> <li class="2">2</li> <li class="3">3</li> <li class="4">4</li> <li class="5">5</li> <!-- 1.使用item.id做:key唯一標識符 --> <!-- 刪除3后,變成 --> <li class="1">1</li> <li class="2">2</li> <li class="4">4</li> <li class="5">5</li> <!-- vue開始將剩下的四個<li>與源代碼的五個<li>進行匹配 使用的是diff算法對比新舊虛擬DOM 由于精準刪除3,1和2直接代碼復(fù)用,4和5發(fā)現(xiàn)class和內(nèi)容均能匹配上 將class重新排列 1234 則映射出新的組合,如下: --> <li class="1">1</li> <li class="2">2</li> <li class="3">4</li> <li class="4">5</li> <!-- ========================================================================= --> <!-- 2.使用index做:key唯一標識符 --> <!-- 刪除3后,index數(shù)組下標會發(fā)生改變,變成 --> <li class="1">1</li> <li class="2">2</li> <li class="3">4</li> <li class="4">5</li> <!-- Vue將內(nèi)容為4的li與內(nèi)容為3的對比,發(fā)現(xiàn)匹配不上,刪除3標簽 再將內(nèi)容為5的li與內(nèi)容為4的對比,也匹配不上,又刪除4標簽 --> <!-- ========================================================================--> <!-- 總結(jié):使用index很多情況不能代碼復(fù)用,強制更新元素,影響性能 --> </div> </div> <script> const app = new Vue({ el: '#app', data:{ }, methods:{ } }) </script> </body> </html>
到此這篇關(guān)于Vue v-for中:key中item.id與Index使用的區(qū)別的文章就介紹到這了,更多相關(guān)vue item.id與Index使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue中的函數(shù)同步執(zhí)行導(dǎo)致的數(shù)據(jù)獲取失敗問題處理辦法
Vue中的mount中有兩個函數(shù),第一個函數(shù)執(zhí)行完后給data中的userInfo賦值,但是第二個函數(shù)獲取userInfo時是空值,這種情況可能是因為第二個函數(shù)在獲取 userInfo 時發(fā)生在第一個函數(shù)執(zhí)行完之前,所以本文給大家介紹了Vue中的函數(shù)同步執(zhí)行導(dǎo)致的數(shù)據(jù)獲取失敗問題處理辦法2024-08-08vue中使用element ui的input框?qū)崿F(xiàn)模糊搜索的輸入框
這篇文章主要介紹了vue中使用element ui的input框?qū)崿F(xiàn)模糊搜索的輸入框,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11vue動態(tài)路由加載時出現(xiàn)Cannot?find?module?xxx問題
這篇文章主要介紹了vue動態(tài)路由加載時出現(xiàn)Cannot?find?module?xxx問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01vue.js動態(tài)設(shè)置VueComponent高度遇到的問題及解決
這篇文章主要介紹了vue.js動態(tài)設(shè)置VueComponent高度遇到的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08vant-ui組件調(diào)用Dialog彈窗異步關(guān)閉操作
這篇文章主要介紹了vant-ui組件調(diào)用Dialog彈窗異步關(guān)閉操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11