被迫走上前端之路第六课之vue的v-for列表渲染

有时候我们需要动态显示一些标签重复的内容或者可迭代数据,如果手动一条条实现有点麻烦,而且代码看着不美观,这个时候就要用到v-for来实现

语法

其中,items是可迭代的对象

<!--写法一-->
<div v-for="item in items"></div>
<!--写法二-->
<div v-for="item of items"></div>

注:有时给 Vue 一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的 key
语法如下:

<div v-for="(item,index) in items" :key="index"></div>

这里的index相当于给循环的每个标签加了一个序号,然后通过key与该标签绑定,这样就可以唯一识别和追踪每个循环的标签(当然你也可以绑定别的值)

举个栗子

动态显示数组

<script setup>
const arr=[1,2,3,4,5,6]
</script>

<template>
  <div v-for="i in arr">
    {{i}}
  </div>
</template>

动态显示字典

<script setup>
import { ref } from 'vue'

// 给每个 todo 对象一个唯一的 id
let id = 0

const newTodo = ref('')
const todos = ref([
  { id: id++, text: 'Learn HTML' },
  { id: id++, text: 'Learn JavaScript' },
  { id: id++, text: 'Learn Vue' }
])
</script>

<template>
  <ul>
  <!-- 方法一-->
    <li v-for="todo in todos" :key="todo.id">
      {{ todo.text }}
    </li>
  </ul>
   <ul>
    <!-- 方法二-->
    <li v-for="(item,index) in todos" :key="index">
     {{item.id}} : {{ item.text }}
    </li>
  </ul>
</template>

动态显示对象

<script setup>
import { ref,reactive } from 'vue'

const myObject = reactive({
  title: 'How to do lists in Vue',
  author: 'Jane Doe',
  publishedAt: '2016-04-10'
})
</script>

<template>
   <ul>
    <li v-for="(value) in myObject">
			{{ value }}
    </li>
    <li v-for="(value,key) in myObject" :key=key>
			{{key}}:{{ value }}
    </li>
     <li v-for="(value,key,index) in myObject" :key=index>
			{{index}}-{{key}}:{{ value }}
    </li>
  </ul>
</template>

嵌套实现

<script setup>
import { ref,reactive } from 'vue'

const items = reactive({
  title: ["hhh","nnn","mmm"],
  author: [1,2,3],
  publishedAt: [4,5,6]
})
</script>

<template>
   <li v-for="(value,key) in items">
  <span v-for="childItem in value">
    <div>
      {{ key }}: {{ childItem }}
    </div>
  </span>
</li>
</template>

更多详情,参见官网:列表渲染

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的小强呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值