Vue v for指令中 key 的必要性

2022-08-03 00:39:11 字數 1387 閱讀 1924

當 vue 正在更新使用 v-for 渲染的元素列表時,它預設使用「就地更新」的策略。如果資料項的順序被改變,vue 將不會移動 dom 元素來匹配資料項的順序,而是就地更新每個元素,並且確保它們在每個索引位置正確渲染。

這個預設的模式是高效的,但是只適用於不依賴子元件狀態或臨時 dom 狀態 (例如:表單輸入值) 的列表渲染輸出。

為了給 vue 乙個提示,以便它能跟蹤每個節點的身份,從而重用和重新排序現有元素,你需要為每項提供乙個唯一 key attribute。

建議盡可能在使用 v-for 時提供 key attribute,除非遍歷輸出的 dom 內容非常簡單,或者是刻意依賴預設行為以獲取效能上的提公升。

選擇zhangsan

新增xiaoming

發現多選框當前選中的變成了xiaoming

刪除xiaoming發現當前選中的又變回了zhangsan

重複上述四個步驟,發現結果與不新增key時相同。

選擇zhangsan

新增xiaoming

多選框當前選中的仍然是zhangsan

刪除zhangsan後當前無選中節點

vue中使用key屬性來標識乙個dom節點,key屬性值要和資料一一關聯(最好是字串或數字等基本型別),vue通過key的值判斷是否是同乙個dom節點。

如果不設定key值,vue預設使用」就地更新「策略,即只更新dom內資料而不對dom節點進行增減移動等操作。

如果設定的key值和資料不能對應(比如上述設定的陣列index,index只與陣列長度有關),也無法增減移動dom節點。

Vue v for中為什麼要加屬性key

在vue官網中強烈推薦在使用v for時要加key屬性,這篇文章看看加屬性key和不加屬性key的區別。我們模擬一下vue中對這部分的處理流程。先建立3個div元素,內容為 xiaozhang xiaowang xiaoliu 然後在第乙個div元素之前再新增乙個新div元素xiaoli,渲染後的內...

Vue中列表渲染指令中key屬性的理解

在官網中看到v for指令中key這一塊時,對其感覺懵懵懂懂,查閱了一些資料,把自己的理解記錄下來,做乙個心得,不知道理解的對不對,希望有大牛指導。vue在更新v for指令渲染過的html時,採用的是就地復用策略,也就是已有的html元素不在重新渲染,直接更新部分資料,這對簡單的html來說沒有影...

vue中key值與react中key值的區別

兩者演算法比較不同 分別對olds olde s e兩兩做samevnode比較,有四種值,舊集合的開頭和結束 olds,olde 新集合的開頭和結束 s e 當其中兩個能匹配上那麼真實dom中的相應節點會移到vnode相應的位置,這句話有點繞,打個比方 大意就是每次比較四個key值,匹配上的就移動...