亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue深入理解之v-for中key的真正作用

 更新時(shí)間:2022年05月05日 09:11:14   作者:Cookcyq  
為了給Vue一個(gè)提示,以便它能跟蹤每個(gè)節(jié)點(diǎn)的身份,從而重用和重新排序現(xiàn)有元素,你需要為每項(xiàng)提供一個(gè)唯一key屬性,下面這篇文章主要給大家介紹了關(guān)于Vue深入理解之v-for中key的真正作用,需要的朋友可以參考下

前言

大家應(yīng)該都知道, v-for 中 key 最常用的綁定方式有兩種:

  • 第一種用 index
  • 第二種用 唯一 id

那么接下來筆者將用幾個(gè)小案例來講述這兩種方式在渲染時(shí)有什么明顯的差別。

第一種: key 采用 index

我們先來看看代碼

<template>
  <div class="root">
    <div class="item" v-for="(item, index) in list" :key="index">
      <h2>{{ item.text }}</h2>
    </div>
    <button @click="replaceData">替換數(shù)據(jù)</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      list: [
        {text: '33333'},
        {text: '66666'},
        {text: '99999'},
      ]
    }
  },
  methods: {
    replaceData() {
      this.list = [
        {text: '22222'},
        {text: '44444'},
        {text: '88888'},
      ]
    }
  }
}
</script>
<style lang="scss">
.item{ background: orange;}
</style>

這里我們渲染了 list 數(shù)組,并將 index 作為 key ,然后還添加一個(gè)替換數(shù)據(jù)按鈕事件,我們來看看效果

當(dāng)我們點(diǎn)擊替換數(shù)據(jù) 這個(gè)按鈕時(shí),數(shù)據(jù)變成這樣

一切看起來很正常對(duì)吧,接下來就是重點(diǎn)了,我們要做點(diǎn)小改動(dòng),首先我們先刷新下頁面讓數(shù)據(jù)恢復(fù)成原來的,然后我們將第二條給手動(dòng)刪掉

現(xiàn)在僅剩下 33333 和 99999,此時(shí)我們?nèi)c(diǎn)擊替換數(shù)據(jù) 看看有什么效果

咦,它只替換了第一條和第三條,原來的第二條被我們剛剛刪掉了,導(dǎo)致 44444 沒有渲染出來,這是為啥呢?其實(shí)很簡(jiǎn)單,因?yàn)樘鎿Q數(shù)據(jù)那批數(shù)組的 index 跟第一批數(shù)組是一樣,Vue 判斷是相同后又何必創(chuàng)建 Dom 這種浪費(fèi)資源的操作呢,所以它并不會(huì)給第二條重新創(chuàng)建 Dom ,這便是 index 作為 key 的作用。

Note:表面視圖沒變化,但數(shù)據(jù)是有更新的,你去訪問 list時(shí),里面還是有三條數(shù)據(jù)22222,44444, 88888,只要記住 Vue 是以數(shù)據(jù)為驅(qū)動(dòng)而不是視圖。

第二種:key 采用唯一 ID

接下來我們來看下第二種,代碼如下

<template>
  <div class="root">
    <div class="item" v-for="(item) in list" :key="item.id">
      <h2>{{ item.text }}</h2>
    </div>
    <button @click="replaceData">替換數(shù)據(jù)</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      list: [
        {text: '33333', id: 1},
        {text: '66666', id: 2},
        {text: '99999', id: 3},
      ]
    }
  },
  methods: {
    replaceData() {
      this.list = [
        {text: '22222', id: 4},
        {text: '44444', id: 5},
        {text: '88888', id: 6}
      ]
    }
  }
}
</script>
<style lang="scss">
.item{ background: orange;}
</style>

代碼和上面差不多,只是新增了 id 并綁定到 key 里面,

接下來我們參考上面的流程走一遍看看這次有什么不同之處。

聰明的你已經(jīng)看出來了,刪掉第二條后,點(diǎn)擊調(diào)換數(shù)據(jù) 會(huì)生成新的三條出來,而不是兩條,原理我相信你也懂了,替換數(shù)據(jù)的那批 id 與上一批不一樣,所以 Vue 比較后發(fā)現(xiàn)不同就幫我們生成新的 Dom

以上便是使用 index 和 唯一 id 的明顯區(qū)別

另外,像 唯一id 不止上面這一種綁定方式,我們也可以在 v-for 里面使用 :key="Math.random()" 生成唯一id,但這種會(huì)有一些細(xì)微的差別,這里筆者就不去舉例了,至于使用哪種 key 可以提升性能方面的相關(guān)知識(shí)不是本章的初衷,讀者可以自行到網(wǎng)上搜索,相信你只要能理解上面這兩種綁定 key 的作用差別在哪里,那么其它的綁定方式對(duì)你來講一定不是難題。

總結(jié)

到此這篇關(guān)于Vue深入理解之v-for中key真正作用的文章就介紹到這了,更多相關(guān)Vue v-for中key作用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一篇文章,教你學(xué)會(huì)Vue CLI 插件開發(fā)

    一篇文章,教你學(xué)會(huì)Vue CLI 插件開發(fā)

    這篇文章主要介紹了Vue CLI插件開發(fā),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue時(shí)間組件DatePicker組件的手寫示例

    vue時(shí)間組件DatePicker組件的手寫示例

    這篇文章主要為大家介紹了vue時(shí)間組件DatePicker組件的手寫實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 關(guān)于Echarts餅圖圖例太長(zhǎng)的解決方案

    關(guān)于Echarts餅圖圖例太長(zhǎng)的解決方案

    這篇文章主要介紹了關(guān)于Echarts餅圖圖例太長(zhǎng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 解讀Vue-loader的相關(guān)知識(shí)

    解讀Vue-loader的相關(guān)知識(shí)

    這篇文章主要介紹了解讀Vue-loader的相關(guān)知識(shí),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 使用vue3+ts打開echarts的正確方式

    使用vue3+ts打開echarts的正確方式

    這篇文章主要給大家介紹了關(guān)于使用vue3+ts打開echarts的正確方式,在Vue3中使用ECharts組件可以方便地創(chuàng)建各種數(shù)據(jù)可視化圖表,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Vue動(dòng)態(tài)設(shè)置img的src不生效的問題解決

    Vue動(dòng)態(tài)設(shè)置img的src不生效的問題解決

    本文主要介紹了Vue動(dòng)態(tài)設(shè)置img的src不生效的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • vue項(xiàng)目中添加electron的詳細(xì)代碼

    vue項(xiàng)目中添加electron的詳細(xì)代碼

    這篇文章通過實(shí)例代碼給大家介紹了vue項(xiàng)目中添加electron的方法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • Vue+canvas實(shí)現(xiàn)水印功能

    Vue+canvas實(shí)現(xiàn)水印功能

    實(shí)際項(xiàng)目中偶爾會(huì)遇到給項(xiàng)目頁面背景加水印的需求,這篇文章主要為大家介紹了Vue使用canvas實(shí)現(xiàn)水印功能的示例代碼,希望對(duì)大家有所幫助
    2023-07-07
  • 淺析vue-router原理

    淺析vue-router原理

    這篇文章主要圍繞Vue的SPA單頁面設(shè)計(jì)展開。SPA(single page application):單一頁面應(yīng)用程序,有且只有一個(gè)完整的頁面,對(duì)vue router原理感興趣的朋友跟隨小編一起看看吧
    2018-10-10
  • vue中的mescroll搜索運(yùn)用及各種填坑處理

    vue中的mescroll搜索運(yùn)用及各種填坑處理

    這篇文章主要介紹了vue中的mescroll搜索運(yùn)用及各種填坑處理,文中通過代碼給大家講解了mescroll vue使用,感興趣的朋友跟隨小編一起看看吧
    2019-10-10

最新評(píng)論