编写 Vue v 您所在的位置:网站首页 v-for实现原理 编写 Vue v

编写 Vue v

2023-11-01 10:15| 来源: 网络整理| 查看: 265

在Vue中,基本上每个项目都会用到v-for循环。它们允许你在模板代码中编写for循环。

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

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

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

       {{ product.name }}   

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

让我们开始吧。

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

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

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

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

       {{ product.name }}    2. 在一定范围内使用v-for循环

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

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

       {{ products[page * 10 + index] }}    3. 避免在循环中使用v-if

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

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

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

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

// 不好的做法!        {{ product.name }}   

那么问题是什么?

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

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

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

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

4. 使用computed属性或方法

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

使用computed属性 使用过滤方法

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

首先,我们只需要设置一个computed属性。为了获得与之前的v-if相同的功能,代码看起来像这样。

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

这样的好处是:

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

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

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

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

6. 访问循环中的索引

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

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

       Product #{{ index }}: {{ product.name }}    7. 迭代对象

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

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

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

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

              {{ item }}         结论

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

感谢大家的阅读,祝大家编码快乐!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有