v-for列表渲染用法-for循环为什么用key

一,v-for

我们可以使用 v-for 指令基于一个数组来渲染一个列表,v-for 指令的值需要使用 item in items 形式的特殊语法,其中 items 是源数据的数组,而 item 是迭代项的别名

代码示例:

<script setup> 
import { ref } from 'vue';
//定义一个数组,存些基本信息
const num=ref([
	{id:1,name:"张三",age:18},
	{id:2,name:"李四",age:19},
	{id:3,name:"王五",age:18},
	{id:4,name:"嘿嘿",age:18}
])
</script>
<template>
     <view v-for="item in num">
			id:{{item.id}}
			名称:{{item.name}}
			年龄:{{item.age}}
     </view>
</template>

然后我们就可以在页面上看到用for循环出的基本信息

在 v-for 块中可以完整地访问父作用域内的属性和变量,v-for 也支持使用可选的第二个参数表示当前项的位置索引 

代码示例:

<template>
    <view v-for="(item,index) in num">
		id:{{item.id}}
		名称:{{item.name}}
		年龄:{{item.age}}
		索引值:{{index}}
	</view>
</template>

 

还可以使用 of 作为分隔符来替代 in,这更接近 JavaScript 的迭代器语法:

<view v-for="item of items"></view>

注意

同时使用 v-if 和 v-for 是不推荐的,因为这样二者的优先级不明显

二,通过 key 管理状态

Vue 默认按照“就地更新”的策略来更新通过 v-for 渲染的元素列表。当数据项的顺序改变时,Vue 不会随之移动 DOM 元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染

默认模式是高效的,但只适用于列表渲染输出的结果不依赖子组件状态或者临时 DOM 状态 (例如表单输入值) 的情况

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

代码示例:

<template>
   <!-- <view class="box">
        <view v-for="(item,index) in num">
			id:{{item.id}}
			名称:{{item.name}}
			年龄:{{item.age}}
			索引值:{{index}}
		</view>
    </view> -->
	 <view class="box1" v-for="(item,index) in num" :key="item.id">
		<checkbox></checkbox>
		<text>{{item.name}}&nbsp;&nbsp;&nbsp;</text>
		<text @click="del(index)">删除</text><!-- 删除的点击事件,传进了下标 -->
	</view>
</template>
 
<script setup> 
import { ref } from 'vue';
//定义一个数组,存些基本信息
const num=ref([
	{id:1,name:"张三",age:18},
	{id:2,name:"李四",age:19},
	{id:3,name:"王五",age:18},
	{id:4,name:"嘿嘿",age:18}
])

function del(e){
	num.value.splice(e,1)//按下标删除
}
</script>

<style lang="scss" scoped>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值