最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

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

第一種: 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 ,然后還添加一個替換數(shù)據(jù)按鈕事件,我們來看看效果

當我們點擊替換數(shù)據(jù) 這個按鈕時,數(shù)據(jù)變成這樣

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

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

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

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

第二種: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ào)換數(shù)據(jù) 會生成新的三條出來,而不是兩條,原理我相信你也懂了,替換數(shù)據(jù)的那批 id 與上一批不一樣,所以 Vue 比較后發(fā)現(xiàn)不同就幫我們生成新的 Dom

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

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

總結(jié)

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

相關(guān)文章

  • vue-cli3項目升級到vue-cli4 的方法總結(jié)

    vue-cli3項目升級到vue-cli4 的方法總結(jié)

    這篇文章主要介紹了vue-cli3項目升級到vue-cli4 的方法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • vue中如何刪除字符串中的空格符

    vue中如何刪除字符串中的空格符

    這篇文章主要介紹了vue中如何刪除字符串中的空格符方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 關(guān)于vue3使用particles粒子特效的問題

    關(guān)于vue3使用particles粒子特效的問題

    這篇文章主要介紹了關(guān)于vue3使用particles粒子特效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue中的H5移動端項目?真機測試配置方式

    vue中的H5移動端項目?真機測試配置方式

    這篇文章主要介紹了vue中的H5移動端項目?真機測試配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue使用echarts時created里拿到的數(shù)據(jù)無法渲染的解決

    vue使用echarts時created里拿到的數(shù)據(jù)無法渲染的解決

    這篇文章主要介紹了vue使用echarts時created里拿到的數(shù)據(jù)無法渲染的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue數(shù)組更新及過濾排序功能

    Vue數(shù)組更新及過濾排序功能

    Vue為了增加列表渲染的功能,增加了一組觀察數(shù)組的方法,而且可以顯示一個數(shù)組的過濾或排序的副本。本文將詳細介紹Vue數(shù)組更新及過濾排序
    2017-08-08
  • vue前端通過騰訊接口獲取用戶ip的全過程

    vue前端通過騰訊接口獲取用戶ip的全過程

    今天在寫項目掉接口的時候有一個接口需要到了用戶的ip地址,查了半天覺得這個方法不錯,下面這篇文章主要給大家介紹了關(guān)于vue前端通過騰訊接口獲取用戶ip的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • vue使用關(guān)于speak-tss插件的詳細介紹及一些配置項

    vue使用關(guān)于speak-tss插件的詳細介紹及一些配置項

    本文詳細介紹了speak-tss插件在Vue3中的使用方法和配置,首先需要下載依賴,然后引入插件,并進行實例化和配置,配置項包括音量、語言、語音、語速、音調(diào)等,speak-tss支持多種語言和語音,適用于需要文本語音播報的場景
    2024-09-09
  • Vue文件的組織結(jié)構(gòu)不合理之優(yōu)化項目結(jié)構(gòu)詳解

    Vue文件的組織結(jié)構(gòu)不合理之優(yōu)化項目結(jié)構(gòu)詳解

    在這篇博客中,我們將探討 Vue 文件組織結(jié)構(gòu)不合理的幾個常見問題,并提供解決方案,以幫助開發(fā)者創(chuàng)建更清晰、更高效的項目文件結(jié)構(gòu),希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • vue實際運用之vuex持久化詳解

    vue實際運用之vuex持久化詳解

    這篇文章主要為大家介紹了vue運用之vuex持久化,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評論

三亚市| 德阳市| 霍林郭勒市| 扶余县| 安仁县| 徐州市| 盐亭县| 盘山县| 遂宁市| 米脂县| 东丰县| 梅河口市| 泾川县| 南城县| 成都市| 桐庐县| 兴山县| 忻城县| 雅江县| 咸丰县| 阿城市| 纳雍县| 万宁市| 辽阳市| 沅江市| 崇左市| 郓城县| 枣强县| 奉新县| 广州市| 皮山县| 石棉县| 上杭县| 若羌县| 泌阳县| 香格里拉县| 河源市| 江川县| 县级市| 宜城市| 澎湖县|