我的编程空间,编程开发者的网络收藏夹
学习永远不晚

编写Vuev-for循环的7种方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

编写Vuev-for循环的7种方式

这在碰到诸如以下情况时特别好用:

  • 渲染数组或列表
  • 遍历对象属性

在Vue中v-for循环最基本的用法是这样的:


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


但是,在本文中,我们将介绍一些超棒的方法,可以使你的v-for代码更加精确、可预测和高效。

让我们开始吧。

1. 始终在v-for循环中使用key

首先,我们讨论的是大多数Vue开发人员已经知道的常见最佳实践——在v-for循环中使用:key。通过设置唯一的键属性,可以确保组件按期望的方式工作。

如果我们不使用:key,Vue将使DOM尽可能高效。这可能会导致v-for元素出现乱序或其他不可预测的行为。

如果我们对每个元素都有唯一的键引用,那么就可以更好地预测如何操纵DOM。


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


2. 在一定范围内使用v-for循环

虽然大多数时候v-for用于循环数组或对象,但也有我们只想迭代特定次数的情况。

例如,假设我们正在为在线商店创建分页系统,并且我们只想每页显示10个产品。使用变量来跟踪当前页码,就可以像这样处理分页。


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


3. 避免在循环中使用v-if

一个超常见的错误是使用v-if来过滤v-for循环的数据。

虽然看上去直观了,但这会导致一个巨大的性能问题——VueJS将优先v-for于v-if指令。

这意味着组件将遍历每个元素,然后再检查v-if条件以查看是否应该呈现。

如果你将v-if与v-for一起使用,无论条件是什么,都将遍历数组的每一项。


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


那么问题是什么?

假设products数组有数千个项,但想要渲染的只有3个在售产品。

每次重新渲染时,即使出售的3种产品根本没有改变,Vue也必须遍历这数千个项。

必须尽量避免结合使用v-if与v-for的情况。

接下来介绍两个替代方法。

4. 使用computed属性或方法

为了避免上述问题,我们应该在模板中进行迭代之前过滤数据。有两种非常相似的方法可以做到:

  • 使用computed属性
  • 使用过滤方法

随你选择,下面让我们快速介绍这两个方法。

首先,我们只需要设置一个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>

这样的好处是:

  • 数据属性只会在依赖项发生变化时重新评估
  • 模板只遍历在售的产品,而不是每一个产品

使用过滤方法的代码几乎相同,但使用方法会改变访问模板内值的方式。但是,如果我们希望能够将变量传递给过滤过程,那么就应该选择方法这条路。


<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. 或者在循环外包一层元素

在决定是否完全渲染列表时,你可能还是想要将v-forv-if结合起来。

例如,如果我们只想在用户登录时呈现产品列表怎么办。

错误代码:


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


这有什么问题?

和之前一样。Vue模板会优先考虑v-for——所以会遍历每个元素并检查v-if

即使最后什么都不渲染,也会循环数千个元素。

对于此示例,有一个简单的解决方案是移动v-if语句。

更好的代码!


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


这要好得多,因为如果isLoggedInfalse——那就根本不需要迭代。

6. 访问循环中的索引

除了遍历数组并访问每个元素之外,我们还可以跟踪每个项目的索引。

为此,我们需要在项目之后添加一个索引值。这样做超级简单,但对于分页、显示列表索引、显示排名等都很有用。


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


7. 迭代对象

到目前为止,我们只研究了使用v-for来遍历数组。但是我们也可以很轻松地学会迭代对象的键值对。

与访问元素的索引类似,我们需要向循环中添加另一个值。如果我们使用单个参数循环对象,我们将循环所有项。

如果我们添加另一个参数,则将获得项和键。如果我们添加第三个参数,则还可以访问v-for循环的索引。

假设我们想遍历产品中的每个属性。那么代码如下:


<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>


结论:
希望这篇文章能帮助你学到一些关于使用Vue v-for指令的最佳实践。

到此这篇关于编写 Vue v-for 循环的 7 种方式的文章就介绍到这了,更多相关 Vue v-for 循环的  方式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

编写Vuev-for循环的7种方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

编写Vue v-for循环的方式有哪些

这篇文章主要讲解了“编写Vue v-for循环的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“编写Vue v-for循环的方式有哪些”吧!这在碰到诸如以下情况时特别好用:渲染数组或
2023-06-22

JavaScript For循环的方式有哪几种

JavaScript中常见的循环方式有以下几种:1. for循环:通过指定初始条件、循环条件和循环增量来执行一系列语句,直到循环条件不满足为止。```javascriptfor (初始条件; 循环条件; 循环增量) {// 执行的代码}``
2023-09-22

Python使用for实现无限循环的多种方式汇总

这篇文章主要介绍了Python使用for实现无限循环的多种方式汇总,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-02

Java中List for循环的6种写法总结(推荐)

如下所示:List list = new ArrayList();for
2023-05-31

java中for循环的方式有哪些

Java中for循环的方式有以下几种:1. 基本for循环:在已知循环次数的情况下使用,适用于遍历数组或集合等固定大小的数据结构。```javafor (int i = 0; i // 循环体}```2. 增强for循环:用于遍历数组或集合
2023-10-07

java循环嵌套的方式有哪几种

在Java中,循环嵌套的方式有以下几种:1. for循环嵌套:在一个for循环内部再嵌套一个或多个for循环。```javafor (int i = 0; i for (int j = 0; j // 循环体代码}}```2. while循
2023-09-13

java跳出循环的方式有哪几种

Java中跳出循环的方式有以下几种:1. 使用break语句:当循环条件满足某个条件时,可以使用break语句跳出循环,执行循环后面的代码。2. 使用continue语句:当循环条件满足某个条件时,可以使用continue语句跳过当前循环的
2023-10-18

如何编写一个shell for循环与case结合的脚本

这篇文章主要讲解了“如何编写一个shell for循环与case结合的脚本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何编写一个shell for循环与case结合的脚本”吧!核心代码:
2023-06-09

php中循环数组的几种方式是什么

循环方式:1、使用for语句遍历数组;2、使用foreach()语句遍历数组;3、利用while语句配合list()、each()函数来遍历数组;4、利用while语句配合key()、current()、next()等指针函数来遍历数组。
2018-01-31

浅谈Spring解决循环依赖的三种方式

引言:循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错。下面说一下Spring是如果解决循环依赖的。第一种:构造器参数循环依赖表示通过构造器注入构成的
2023-05-30

编程热搜

目录