欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用vue for時(shí)為什么要key【推薦】

 更新時(shí)間:2019年07月11日 16:46:34   作者:取名困難綜合癥  
很多朋友不明白在使用vue for時(shí)為什么要key,key的作用有哪些,在文中給大家詳細(xì)介紹,需要的朋友可以參考下

前言:

用vue框架寫前端代碼時(shí)經(jīng)常會(huì)用用到v-for這個(gè)方法,但使用此方法時(shí)vue推薦我們加上一個(gè)唯一標(biāo)識(shí)key這是為什么呢?閱讀了網(wǎng)上各位大神的文章以及自己的一些理解對(duì)這個(gè)問題有了新的認(rèn)識(shí)。所以記錄下來,若各位看官看到文章里面有錯(cuò)誤的地方請(qǐng)指正一下。謝謝各位大佬。

一.diff算法

修改渲染真實(shí)的dom會(huì)引起整個(gè)dom樹的重繪和重排。diff算法可以幫助我們只對(duì)我們想要修改的部分進(jìn)行更新而不會(huì)引起整個(gè)dom樹的重繪和重排。 我們先根據(jù)dom生成virtual DOM,當(dāng)virtual Dom上的某個(gè)dom節(jié)點(diǎn)數(shù)據(jù)改變后會(huì)生成一個(gè)新的Vnode.將新生成的Vnode和oldVnode做對(duì)比。發(fā)現(xiàn)有修改的地方就直接渲染到真實(shí)的dom樹上。

diff算法一邊比較新舊節(jié)點(diǎn)的區(qū)別一邊在真實(shí)的dom樹上打補(bǔ)丁

二.key的作用

我個(gè)人覺得key的作用就是為了快速的找到新節(jié)點(diǎn)對(duì)應(yīng)的舊節(jié)點(diǎn)。key是給每一個(gè)vnode唯一的id,可以依靠key,更準(zhǔn)確, 更快的拿到oldVnode中對(duì)應(yīng)的vnode節(jié)點(diǎn)。但不使用key時(shí)代碼也可以運(yùn)行但是會(huì)報(bào)warning.為什么呢。

三.不使用key時(shí)的執(zhí)行

例:不使用key 一個(gè)數(shù)組arr=['1','2','3','4','5','6']。

<view v-for='arr'>
    {{item}}
  </view>

上面代碼會(huì)生成6個(gè)div每個(gè)div對(duì)應(yīng)的arr中的數(shù)字?,F(xiàn)在我們將arr變成[0, 1, 2, 3, 7, 8, 9]。更新渲染的步驟時(shí)這樣的原先div中的1變成0 2變成1以此類推最后新增一個(gè)div內(nèi)容為9。 Vue會(huì)通過改變?cè)瓉碓氐膬?nèi)容和增加/減少元素來完成這個(gè)改變,因?yàn)闆]有key屬性,Vue無法跟蹤每個(gè)節(jié)點(diǎn),只能通過這樣的方法來完成變更。

四.使用key時(shí)

例:numbers為[1, 2, 3, 7, 8, 9]

<div v-for="(num, index) in numbers" :key="index">
   {{num}}
  </div>

變成了[0, 1, 2, 3, 7,8,9]新增一個(gè)

元素,它的內(nèi)容為0,并將它插入原先內(nèi)容為1的元素之前。 在有了key屬性之后,Vue會(huì)記住元素們的順序,并根據(jù)這個(gè)順序在適當(dāng)?shù)奈恢貌迦?刪除元素來完成更新,這種方法比沒有key屬性時(shí)的就地復(fù)用策略效率更高。 總體來說,當(dāng)使用列表渲染時(shí),永遠(yuǎn)添加key屬性,這樣可以提高列表渲染的效率,提高了頁面的性能。

總結(jié)

以上所述是小編給大家介紹的使用vue for時(shí)為什么要key屬性,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • VueX安裝及使用基礎(chǔ)教程

    VueX安裝及使用基礎(chǔ)教程

    這篇文章介紹了VueX安裝及使用基礎(chǔ)教程,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Vite配置代理Proxy解決跨域問題小結(jié)

    Vite配置代理Proxy解決跨域問題小結(jié)

    我們?cè)谧鲰?xiàng)目的時(shí)候經(jīng)常會(huì)遇到跨域的問題,下面這篇文章主要給大家介紹了關(guān)于Vite配置代理Proxy解決跨域問題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • vue中this.$http.post()跨域和請(qǐng)求參數(shù)丟失的解決

    vue中this.$http.post()跨域和請(qǐng)求參數(shù)丟失的解決

    這篇文章主要介紹了vue中this.$http.post()跨域和請(qǐng)求參數(shù)丟失的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue 中url 鏈接左邊的小圖標(biāo)更改問題

    vue 中url 鏈接左邊的小圖標(biāo)更改問題

    這篇文章主要介紹了vue 中url 鏈接左邊的小圖標(biāo)更改問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • element?ui?el-calendar日歷組件使用方法總結(jié)

    element?ui?el-calendar日歷組件使用方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于element?ui?el-calendar日歷組件使用方法的相關(guān)資料,elementui是一款基于Vue.js的UI框架,其中的日歷組件calendar是elementui中非常常用的組件之一,需要的朋友可以參考下
    2023-07-07
  • vue如何自定義封裝API組件

    vue如何自定義封裝API組件

    這篇文章主要介紹了vue如何自定義封裝API組件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue+Echart實(shí)現(xiàn)立體柱狀圖

    vue+Echart實(shí)現(xiàn)立體柱狀圖

    這篇文章主要為大家詳細(xì)介紹了vue+Echart實(shí)現(xiàn)立體柱狀圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue組件懶加載的操作代碼

    Vue組件懶加載的操作代碼

    在本文中,我們學(xué)習(xí)了如何使用 Intersection Observer API 和?defineAsyncComponent?函數(shù)在 Vue 組件可見時(shí)對(duì)其進(jìn)行懶加載,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友一起看看吧
    2023-09-09
  • vue?el-switch初始值(默認(rèn)值)不能正確顯示狀態(tài)問題及解決

    vue?el-switch初始值(默認(rèn)值)不能正確顯示狀態(tài)問題及解決

    這篇文章主要介紹了vue?el-switch初始值(默認(rèn)值)不能正確顯示狀態(tài)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 簡(jiǎn)單實(shí)現(xiàn)vue驗(yàn)證碼60秒倒計(jì)時(shí)功能

    簡(jiǎn)單實(shí)現(xiàn)vue驗(yàn)證碼60秒倒計(jì)時(shí)功能

    這篇文章主要為大家介紹了如何簡(jiǎn)單實(shí)現(xiàn)vue驗(yàn)證碼60秒倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評(píng)論