Vue.js 循环语句

简介: Vue.js 循环语句

Vue.js 循环语句

在Vue开发中,for循环是我们最常遇见的场景之一,我们知道常见的遍历方式有for循环,for of、forEach、for in.虽然在开发过程中,这几种方式基本上可以满足我们大多数的场景,但是你真的知道他们之间的区别吗?接下来跟大家分享一下他们之间的差异

始终在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>

在一个范围内循环

尽管大多数情况下,v-for 用于遍历数组或对象,但在某些情况下,我们肯定只希望循环执行一定次数。

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

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

使用计算属性或方法代替

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

  • 使用计算属性
  • 使用过滤方法
    让我们快速地介绍一下这两种方法。

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

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

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

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

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

// ...

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

遍历一个对象

到目前为止,我们只真正看过使用 v-for 遍历数组,但是我们可以轻松地遍历对象的键值对。
与访问元素的索引类似,我们必须向循环中添加另一个值。如果我们用一个参数遍历一个对象,我们将遍历所有的项。
如果我们添加另一个参数,我们将获得items 和 key,如果添加第三个,我们还可以访问 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>

显示过滤/排序后的结果

我们可以对数组的元素进行处理后再显示出来,一般可以通过创建一个计算属性,来返回过滤或排序后的数组。

<div id="app">
  <ul>
    <li v-for="n in evenNumbers">{
  { n }}</li>
  </ul>
</div>

v-for 迭代整数

v-for 也可以循环整数

<div id="app">
  <ul>
    <li v-for="n in 10">
     {
  { n }}
    </li>
  </ul>
</div>

v-for/v-if 联合使用

<div id="app">
   <select @change="changeVal($event)" v-model="selOption">
      <template v-for="(site,index) in sites" :site="site" :index="index" :key="site.id">
         <!-- 索引为 1 的设为默认值,索引值从0 开始-->
         <option v-if = "index == 1" :value="site.name" selected>{
  {site.name}}</option>
         <option v-else :value="site.name">{
  {site.name}}</option>
      </template>
   </select>
   <div>您选中了:{
  {selOption}}</div>
</div>

<script>
const app = {
    data() {
        return {
            selOption: "Runoob",
            sites: [
                  {id:1,name:"Google"},
                  {id:2,name:"Runoob"},
                  {id:3,name:"Taobao"},
            ]
         }

    },
    methods:{
        changeVal:function(event){
            this.selOption = event.target.value;
            alert("你选中了"+this.selOption);
        }
    }
}

Vue.createApp(app).mount('#app')
</script>
相关文章
|
6月前
|
JavaScript 前端开发
JavaScript的循环语句有哪些?
JavaScript的循环语句有哪些?
|
4天前
|
JavaScript 前端开发
JavaScript 条件循环语句(for 循环)
JavaScript 条件循环语句(for 循环)
|
4天前
|
JavaScript 前端开发
编程笔记 html5&css&js 079 JavaScript 循环语句
编程笔记 html5&css&js 079 JavaScript 循环语句
|
9月前
|
JavaScript
js常用的循环语句有哪些?
js常用的循环语句有哪些?
|
4天前
|
前端开发 JavaScript
【面试题】JavaScript 循环语句
【面试题】JavaScript 循环语句
|
4天前
|
JavaScript 索引
Vue.js中循环语句的使用方法和相关技巧
Vue.js中循环语句的使用方法和相关技巧
60 1
Vue.js中循环语句的使用方法和相关技巧
|
7月前
|
JavaScript 前端开发 索引
JavaScript丨循环语句
这里是`JavaScript`基础教程的第六期啦!上次讲了条件语句,同时也讲了`今天吃什么`的栗子,这一次就开始讲一讲`JavaScript`中的循环语句啦!
|
9月前
|
JavaScript 前端开发
JavaScript -- 条件语句和循环语句
JavaScript -- 条件语句和循环语句
|
10月前
|
JavaScript
JS(第八课)循环语句中常用到的案例(三)
JS(第八课)循环语句中常用到的案例(三)
56 0
|
10月前
|
JavaScript
JS(第八课)循环语句中常用到的案例(二)
JS(第八课)循环语句中常用到的案例(二)
54 0