" />

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

編寫 Vue v-for 循環(huán)的 7 種方式

 更新時間:2021年12月30日 11:21:14   作者:耀_  
這篇文章主要分享可編寫 Vue v-for 循環(huán)的 7 種方式,在Vue中,基本上每個項目都會用到v-for循環(huán)。它們允許你在模板代碼中編寫for循環(huán),接下來一起看看下面文章的詳細(xì)介紹吧

這在碰到諸如以下情況時特別好用:

  • 渲染數(shù)組或列表
  • 遍歷對象屬性

在Vue中v-for循環(huán)最基本的用法是這樣的:

<ul>
  <li v-for='product in products'>
    {{ product.name }}
  </li>
</ul>


但是,在本文中,我們將介紹一些超棒的方法,可以使你的v-for代碼更加精確、可預(yù)測和高效。

讓我們開始吧。

1. 始終在v-for循環(huán)中使用key

首先,我們討論的是大多數(shù)Vue開發(fā)人員已經(jīng)知道的常見最佳實(shí)踐——在v-for循環(huán)中使用:key。通過設(shè)置唯一的鍵屬性,可以確保組件按期望的方式工作。

如果我們不使用:key,Vue將使DOM盡可能高效。這可能會導(dǎo)致v-for元素出現(xiàn)亂序或其他不可預(yù)測的行為。

如果我們對每個元素都有唯一的鍵引用,那么就可以更好地預(yù)測如何操縱DOM。

<ul>
  <li 
    v-for='product in products'
    :key='product._id'  
  >
    {{ product.name }}
  </li>
</ul>


2. 在一定范圍內(nèi)使用v-for循環(huán)

雖然大多數(shù)時候v-for用于循環(huán)數(shù)組或?qū)ο?,但也有我們只想迭代特定次?shù)的情況。

例如,假設(shè)我們正在為在線商店創(chuàng)建分頁系統(tǒng),并且我們只想每頁顯示10個產(chǎn)品。使用變量來跟蹤當(dāng)前頁碼,就可以像這樣處理分頁。

<ul>
  <li v-for='index in 10' :key='index'>
    {{ products[page * 10 + index] }}
  </li>
</ul>


3. 避免在循環(huán)中使用v-if

一個超常見的錯誤是使用v-if來過濾v-for循環(huán)的數(shù)據(jù)。

雖然看上去直觀了,但這會導(dǎo)致一個巨大的性能問題——VueJS將優(yōu)先v-for于v-if指令。

這意味著組件將遍歷每個元素,然后再檢查v-if條件以查看是否應(yīng)該呈現(xiàn)。

如果你將v-if與v-for一起使用,無論條件是什么,都將遍歷數(shù)組的每一項。

// 不好的做法!
<ul>
  <li 
    v-for='product in products' 
    :key='product._id' 
    v-if='product.onSale'
  >
    {{ product.name }}
  </li>
</ul>


那么問題是什么?

假設(shè)products數(shù)組有數(shù)千個項,但想要渲染的只有3個在售產(chǎn)品。

每次重新渲染時,即使出售的3種產(chǎn)品根本沒有改變,Vue也必須遍歷這數(shù)千個項。

必須盡量避免結(jié)合使用v-if與v-for的情況。

接下來介紹兩個替代方法。

4. 使用computed屬性或方法

為了避免上述問題,我們應(yīng)該在模板中進(jìn)行迭代之前過濾數(shù)據(jù)。有兩種非常相似的方法可以做到:

  • 使用computed屬性
  • 使用過濾方法

隨你選擇,下面讓我們快速介紹這兩個方法。

首先,我們只需要設(shè)置一個computed屬性。為了獲得與之前的v-if相同的功能,代碼看起來像這樣。

<template>
  <ul>
    <li v-for="products in productsOnSale" :key="product._id">
      {{ product.name }}
    </li>
  </ul>
</template>

<script>
  export default {
    data () {
      return {
        products: []
      }
    },
    computed: {
      productsOnSale: function () {
        return this.products.filter(product => product.onSale)
      }
    }
  }
</script>

這樣的好處是:

  • 數(shù)據(jù)屬性只會在依賴項發(fā)生變化時重新評估
  • 模板只遍歷在售的產(chǎn)品,而不是每一個產(chǎn)品

使用過濾方法的代碼幾乎相同,但使用方法會改變訪問模板內(nèi)值的方式。但是,如果我們希望能夠?qū)⒆兞總鬟f給過濾過程,那么就應(yīng)該選擇方法這條路。

<template>
  <ul>
    <li v-for="products in productsOnSale(50))" :key="product._id">
      {{ product.name }}
    </li>
  </ul>
</template>

<script>
  export default {
   data () {
    return {
     products: []
    }
   },
   methods: {
    productsOnSale (maxPrice) {
     return this.products.filter(product => product.onSale && product.price < maxPrice)
    }
   }
  }
</script>


5. 或者在循環(huán)外包一層元素

在決定是否完全渲染列表時,你可能還是想要將v-forv-if結(jié)合起來。

例如,如果我們只想在用戶登錄時呈現(xiàn)產(chǎn)品列表怎么辦。

錯誤代碼:

<ul>
  <li 
    v-for='product in products' 
    :key='product._id' 
    v-if='isLoggedIn' <!-- HERE -->
  >
    {{ product.name }}
  </li>
</ul>


這有什么問題?

和之前一樣。Vue模板會優(yōu)先考慮v-for——所以會遍歷每個元素并檢查v-if。

即使最后什么都不渲染,也會循環(huán)數(shù)千個元素。

對于此示例,有一個簡單的解決方案是移動v-if語句。

更好的代碼!

<ul v-if='isLoggedIn'> <!-- Much better -->
  <li 
    v-for='product in products' 
    :key='product._id' 
  >
    {{ product.name }}
  </li>
</ul>


這要好得多,因?yàn)槿绻?code>isLoggedIn為false——那就根本不需要迭代。

6. 訪問循環(huán)中的索引

除了遍歷數(shù)組并訪問每個元素之外,我們還可以跟蹤每個項目的索引。

為此,我們需要在項目之后添加一個索引值。這樣做超級簡單,但對于分頁、顯示列表索引、顯示排名等都很有用。

<ul>
  <li v-for='(products, index) in products' :key='product._id' >
    Product #{{ index }}: {{ product.name }}
  </li>
</ul>


7. 迭代對象

到目前為止,我們只研究了使用v-for來遍歷數(shù)組。但是我們也可以很輕松地學(xué)會迭代對象的鍵值對。

與訪問元素的索引類似,我們需要向循環(huán)中添加另一個值。如果我們使用單個參數(shù)循環(huán)對象,我們將循環(huán)所有項。

如果我們添加另一個參數(shù),則將獲得項和鍵。如果我們添加第三個參數(shù),則還可以訪問v-for循環(huán)的索引。

假設(shè)我們想遍歷產(chǎn)品中的每個屬性。那么代碼如下:

<ul>
  <li v-for='(products, index) in products' :key='product._id' >
    <span v-for='(item, key, index) in product' :key='key'>
      {{ item }}
    </span>
  </li>
</ul>


結(jié)論:
希望這篇文章能幫助你學(xué)到一些關(guān)于使用Vue v-for指令的最佳實(shí)踐。

到此這篇關(guān)于編寫 Vue v-for 循環(huán)的 7 種方式的文章就介紹到這了,更多相關(guān) Vue v-for 循環(huán)的? 方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題

    解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題

    今天小編就為大家分享一篇解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue3?企業(yè)級組件庫框架搭建?pnpm?monorepo實(shí)戰(zhàn)示例

    Vue3?企業(yè)級組件庫框架搭建?pnpm?monorepo實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了Vue3?企業(yè)級組件庫框架搭建?pnpm?monorepo實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Vue學(xué)習(xí)-VueRouter路由基礎(chǔ)

    Vue學(xué)習(xí)-VueRouter路由基礎(chǔ)

    這篇文章主要介紹了Vue學(xué)習(xí)-VueRouter路由基礎(chǔ),路由本質(zhì)上就是超鏈接,xiamian?文章圍繞VueRouter路由的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2021-12-12
  • 使用vue-antDesign menu頁面方式(添加面包屑跳轉(zhuǎn))

    使用vue-antDesign menu頁面方式(添加面包屑跳轉(zhuǎn))

    這篇文章主要介紹了使用vue-antDesign menu頁面方式(添加面包屑跳轉(zhuǎn)),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • vue.config.js中配置Vue的路徑別名的方法

    vue.config.js中配置Vue的路徑別名的方法

    這篇文章主要介紹了vue.config.js中配置Vue的路徑別名的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Vuex的四個常用核心概念解讀

    Vuex的四個常用核心概念解讀

    本文詳細(xì)解析了Vuex中的四個核心概念及其區(qū)別,包括State用于存儲狀態(tài),Getters用于計算屬性并緩存,Mutations是唯一更改State的同步方法,Actions則用于提交Mutations且支持異步操作
    2024-11-11
  • Vue實(shí)現(xiàn)首頁banner自動輪播效果

    Vue實(shí)現(xiàn)首頁banner自動輪播效果

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)首頁banner自動輪播效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 基于Vue實(shí)現(xiàn)鼠標(biāo)滾動輪控制頁面橫向滑動效果

    基于Vue實(shí)現(xiàn)鼠標(biāo)滾動輪控制頁面橫向滑動效果

    這篇文章主要介紹了如何基于Vue實(shí)現(xiàn)鼠標(biāo)滾動輪控制頁面橫向滑動效果,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-09-09
  • vue2.0 可折疊列表 v-for循環(huán)展示的實(shí)例

    vue2.0 可折疊列表 v-for循環(huán)展示的實(shí)例

    今天小編大家分享一篇vue2.0 可折疊列表 v-for循環(huán)展示的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 前端Vue單元測試入門教程

    前端Vue單元測試入門教程

    單元測試是用來測試項目中的一個模塊的功能,本文主要介紹了前端Vue單元測試入門教程,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評論

湘潭县| 新郑市| 郴州市| 和龙市| 达拉特旗| 松江区| 扶风县| 杭锦后旗| 沽源县| 马公市| 黑龙江省| 辽中县| 中西区| 石嘴山市| 怀化市| 成武县| 二连浩特市| 镇康县| 东莞市| 清流县| 车险| 纳雍县| 临安市| 西林县| 连山| 东明县| 凤山县| 沙湾县| 石家庄市| 衡阳县| 阳东县| 富民县| 绥棱县| 固镇县| 平远县| 泾源县| 无极县| 藁城市| 伊宁市| 晋城| 温宿县|