Vue.js如何编写更好的v代表循环

  介绍

这篇文章主要讲解了Vue。js如何编写更好的v代表循环,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

在VueJS中,v代表循环是每个项目都会使用的东西,它允许您在模板代码中编写的循环。

在最基本的用法中,它们的用法如下。

& lt; ul>   & lt;李v=& # 39;产品产品# 39;比;   {{product.name}}   & lt;/li>   & lt;/ul>

但是,在本文中,我将介绍六种方法来使你的v代表代码更加精确,可预测和强大。

让我们开始吧。


首先,我们将讨论大多数Vue开发人员已经知道的常见最佳做法——在v代表循环中使用:关键。通过设置一个惟一的键属性,它可以确保组件以您期望的方式工作。

果我们不使用钥匙,Vue将尝试使DOM尽可能高效,这可能意味着v代表元素可能会出现乱序或其他不可预测的行为。如果我们对每个元素都有唯一的键引用,那么我们就可以更好地准确地预测DOM将如何操作。

& lt; ul>   李& lt;   v代表=& # 39;产品产品# 39;   :关键=& # 39;product._id& # 39;   比;   {{product.name}}   & lt;/li>   & lt;/ul>


尽管大多数情况下,v)用于遍历数组或对象,但在某些情况下,我们肯定只希望循环执行一定次数。
例如,假设我们正在为在线商店创建一个分页系统,而我们只希望每页显示10个产品。使用一个变量来跟踪当前的页码,我们可以像这样处理分页。

& lt; ul>   & lt;李v=& # 39;指数在10 & # 39;:关键=& # 39;指数# 39;比;   {{产品[页面* 10 +指数]}}   & lt;/li>   & lt;/ul>


一个超级常见的错误是使用v来过滤v代表循环的数据,尽管这看起来很直观,但它会导致一个巨大的性能问题——VueJS优先考虑v代表而不是v指令。

这意味着您的组件将循环遍历每个元素,然后检查v条件以确定是否应渲染。因此,实际上,无论条件是什么,您都将遍历数组的每个项目。

不要这样:

//坏代码!
  & lt; ul>
  李& lt;
  v代表=& # 39;产品产品# 39;
  :关键=& # 39;product._id& # 39;
  v=& # 39;产品。价格& lt;50 & # 39;
  比;
  {{product.name}}
  & lt;/li>
  & lt;/ul> 


为避免上述问题,我们应该在遍历模板中的数据之前对其进行过滤。有两种非常相似的方法:

    <李>使用计算属性李 <李>使用过滤方法

让我们快速地介绍一下这两种方法。

首先,我们只需要设置一个计算属性,为了获得与之前的v相同的功能,代码应如下所示。

& lt; ul>   & lt;李v=& # 39;产品productsUnderFifty& # 39;:关键=& # 39;product._id& # 39;比;   {{product.name}}   & lt;/li>   & lt;/ul>//?   & lt; script>   出口默认{   数据(){   返回{   产品:[]   }   },   计算:{   productsUnderFifty:函数(){   this.products返回。过滤器(产品=比;产品。价格& lt;50)   }   }   }   & lt;/script>

下面的代码几乎相同,但是使用方法改变了我们访问模板中的值的方式,如果我们希望能够将变量传递给筛选器,那么方法是最好的选择。

& lt; ul>   & lt;李v=& # 39;产品productsUnderPrice (50) & # 39;:关键=& # 39;product._id& # 39;比;   {{product.name}}   & lt;/li>   & lt;/ul>//?      & lt; script>   出口默认{   数据(){   返回{   产品:[]   }   },   方法:{   productsUnderPrice(价格){   this.products返回。过滤器(产品=比;产品。价格& lt;价格)   }   }   }   & lt;/script>


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

为此,我们必须在项目后添加一个索引值,它非常简单,可用于分页,显示列表索引,显示排名等。

& lt; ul>   & lt;李v=& # 39;(产品、索引)产品# 39;:关键=& # 39;product._id& # 39;比;   产品#{{指数}}:{{product.name}}   & lt;/li>   & lt;/ul>

到目前为止,我们只真正看过使用v)遍历数组,但是我们可以轻松地遍历对象的键值对。

与访问元素的索引类似,我们必须向循环中添加另一个值。如果我们用一个参数遍历一个对象,我们将遍历所有的项。
如果我们添加另一个参数,我们将获得的物品和钥匙,如果添加第三个,我们还可以访问v代表循环的索引。

Vue.js如何编写更好的v代表循环