11~vue中列表渲染v-for

vue中列表渲染v-for

v-for遍历数组

我们用v-for指令基于一个数组来渲染一个列表。

v-for语法

item in items
  • 其中 items 是源数据数组
  • item 则是被迭代的数组元素的别名

示例

<script>
export default {
  data () {
    return {    
       person:['张三','李四','王五']      
    }   
  },
  methods: {
  },
  computed: {       
  }, 
  watch:{
  }
}
</script>

<template>
  <!-- template就是模版 -->
  <div>
    <ul>
      <!-- key是给列表项加上唯一的标识 -->
      <li v-for="item in person" :key="item">
      {{ item }}
      </li>
    </ul>    
  </div>
</template>
<style>
</style>

效果
在这里插入图片描述

v-for支持可选的第二个参数

(item,index) in items
  • 其中 items 是源数据数组
  • item 则是被迭代的数组元素的别名
  • index当前项的索引值, 可以省掉, 就是第一种写法了

示例

<script>
export default {
  data () {
    return {    
       person:['张三','李四','王五']      
    }   
  },
  methods: {
  },
  computed: {       
  }, 
  watch:{
  }
}
</script>

<template>
  <!-- template就是模版 -->
  <div>
    <ul>
      <!-- key是给列表项加上唯一的标识 -->
      <li v-for="(item,index) in person" :key="index">
      {{ item }}---{{ index }}
      </li>
    </ul>   
  </div>
</template>
<style>
</style>

of替代in作为分隔符

我们也可以用of替代in作为分隔符, 因为这样更接近JavaScript迭代器的语法

item of items
<script>
export default {
  data () {
    return {    
       person:['张三','李四','王五']      
    }   
  },
  methods: {
  },
  computed: {       
  }, 
  watch:{
  }
}
</script>

<template>
  <!-- template就是模版 -->
  <div>
    <ul>
      <!-- key是给列表项加上唯一的标识 -->
      <li v-for="item of person" :key="item">
      {{ item }}
      </li>
    </ul>   
  </div>
</template>
<style>
</style>

v-for遍历对象

只遍历键值

<li v-for="item of personObj" :key="item">
        {{ item }}
</li> 
  • item 是键值
  • personObj 是源数据对象

遍历加上键名

<li v-for="(item,key) of personObj" :key="key">
        {{ key }}---{{ item }}
</li>   
  • item 是键值
  • key 是键名
  • personObj 是源数据对象

遍历加上索引

<li v-for="(item,key,index) of personObj" :key="key">
        {{index}}---{{ key }}---{{ item }}
</li>   
  • item 是键值
  • key 是键名
  • index 是索引
  • personObj 是源数据对象

示例

<script>
export default {
  data () {
    return {    
       personObj:{
        name:'张三',
        age:18,
        class:'三班'
       }  
    }   
  },
  methods: {
  },
  computed: {       
  }, 
  watch:{
  }
}
</script>

<template>
  <!-- template就是模版 -->
  <div>
    <ul>
      <!-- key是给列表项加上唯一的标识 -->
      <!-- item是键值  -->
      <li v-for="item of personObj" :key="item">
        {{ item }}
      </li>      
    </ul>   
    <ul>
      <!-- item是键值,key是键名 -->
      <li v-for="(item,key) of personObj" :key="key">
        {{ key }}---{{ item }}
      </li>      
    </ul>   

    <ul>
      <!-- item是键值,key是键名,index是索引 -->
      <li v-for="(item,key,index) of personObj" :key="key">
        {{index}}---{{ key }}---{{ item }}
      </li>      
    </ul>   
  </div>
</template>
<style>
</style>

效果
在这里插入图片描述

v-for遍历必须加key

key是为了给vue一个提示, 以便它能跟踪每个节点的身份, 从而重用和重新排序现有元素, 我们需要为每个列表项提供一个唯一的 key attribute;

key 唯一标识, 快速找到DOM节点, 减少渲染次数, 提升渲染性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值