IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue中v-for的最佳使用技巧 -> 正文阅读

[JavaScript知识库]vue中v-for的最佳使用技巧

在vuejs中,v-for 的使用是比较常见的,它允许您在模板代码中编写for循环。那么在使用v-for的时候,可曾思考过使用这个指令的一些技巧吗?
在介绍它的使用技巧之前,我先介绍下它的基本用法吧,在vue中v-for可以遍历数组、对象、字符串,但是用的最多的还是遍历数组,基本方法如下:

<div id="app">
	<ul>
  <li v-for='item in list'>
    {{ item.name }}
  </li>
</ul>
</div>

可能有些初学者在使用的过程中,不会考虑太多的使用技巧,直接遍历定义在data中的数据,其实vue在设计的初衷,也考虑到了这个问题,如果频繁使用data中的数据,可能会造成一些性能上的消耗,是相当不友好的。

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

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

建议在遍历数据的时候,都尽可能的加上key,设置一个惟一的键属性,它可以确保组件以您期望的方式工作。有些时候,可能使用索引index也可以,但是在一些特定的场景下,比如多场景登录下,如果不使用key来标识当前使用的登录方式,那么可能会造成数据的紊乱问题,如果数据量比较大, 页面的数据更新时会造成渲染数据消耗很大的性能甚至出现不可预测的bug,如果我们对每个元素都有唯一的键引用,那么我们就可以更好地准确地预测DOM将如何操作,就可以避免很多不必要的问题出现。

<div id="app">
	<ul>
  <li v-for='item in list'  :key='item.id'>
    {{ item.name }}
  </li>
</ul>
</div>

2.不要在循环中使用v-if

一个超级常见的错误是使用 v-if 来过滤 v-for 循环的数据。Vuejs优先考虑 v-for 而不是 v-if,这意味着组件将循环遍历每个元素,然后检查 v-if 条件以确定是否应渲染。因此,实际上,无论条件是什么,都将遍历数组。尽管这看起来很直观,但它会导致一个巨大的性能问题

/*千万不要这样写,切记切记*/
<div id="app">
	<ul>
  <li v-for='item in list'
      :key='item.id'
      v-if="item.price<50"
      >
    {{ item.name }}
  </li>
</ul>
</div>

3.使用计算属性或方法来处理数据后再做数据遍历
为避免上述问题,我们应该在遍历模板中的数据之前对其进行过滤。有两种非常相似的方法

  • 使用计算属性
  • 使用过滤方法

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

<div id="app">
	<ul>
  <li v-for='item in underPrice'
      :key='item.id'
      >
    {{ item.name }}
  </li>
</ul>
</div>
<script>
  export default {
    data () {
      return {
        list: []
      }
    },
    computed: {
      underPrice: function () {
        return this.list.filter(item=> item.price < 50)
      }
    }
  }
</script>

计算属性是作为属性使用的,并不是方法。使用computed,可以将数据做缓存处理,在每次渲染数据的时候,会优先在缓存在找该数据,如果有了直接从缓存中取出渲染,如果没有的话再重新获取。这样也大大的提高了性能。

或者可以使用方式来进行变量的筛选以及处理再做遍历

<div id="app">
	<ul>
  <li v-for='item in underPriceHandle(50)'
      :key='item.id'
      >
    {{ item.name }}
  </li>
</ul>
</div>
<script>
  export default {
    data () {
      return {
        list: []
      }
    },
    methods: {
      underPriceHandle: function (price) {
        return this.list.filter(item=> item.price < price)
      }
    }
  }
</script>

4.在一个范围内循环

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


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

5.在循环中访问项目的索引

除了遍历数组和访问每个元素之外,我们还可以跟踪每个项的索引。
为此,我们必须在项目后添加一个索引值,它非常简单,可用于分页,显示列表索引,显示排名等。

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

6.遍历一个对象
我们也可以使用v-for轻松地遍历对象的键值对。

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

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

<ul>
  <li v-for='(list, index) in lists' :key='list.id' >
    <span v-for='(item, key, index) in list' :key='key'>
      {{ item }}
    </span>
  </li>
</ul>

上述的这些使用技巧,你学会了吗?如果还有更好的使用技巧,我们可以一起交流分享。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:57:40  更:2021-08-19 11:59:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:47:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码