【购物车案例】for循环为什么使用key

要做出一个简单的购物车界面。首先,有一个复选框,可以选择商品,后面紧跟的是商品名称,然后,是删除按钮,根据这个需求,先写出一个简单的界面,代码如下:

<template>
	<view class="out">
		<view class="item" >
			<checkbox></checkbox>
			<text class="title" >索尼</text>
			<text class="del" >删除</text>
		</view>
	</view>
</template>

<script setup>


</script>

<style lang="scss" scoped>
	     .out{
			 padding: 10px;
		 }  
		 .item{
			 padding: 10px 0;
			  .del{
				  color: #c00;
				  margin-left: 30px;
			  }
		 }
</style>

实际效果:
在这里插入图片描述
现在,定义一个商品循环体 ,对item进行循环,完成整个界面的制作,代码如下:

<template>
	<view class="out">
		<view class="item" v-for="item in goods">
			<checkbox></checkbox>
			<text class="title" >{{item.name}}</text>
			<text class="del" >删除</text>
		</view>
	</view>
</template>

<script setup>
import {ref} from "vue" ;
const goods = ref([
	{id:1,name:"索尼"},
	{id:2,name:"摩托罗拉"},
	{id:3,name:"诺基亚"},
	{id:4,name:"LG"},
])

</script>

<style lang="scss" scoped>
	     .out{
			 padding: 10px;
		 }  
		 .item{
			 padding: 10px 0;
			  .del{
				  color: #c00;
				  margin-left: 30px;
			  }
		 }
</style>

实际效果:
在这里插入图片描述
页面部分制作完毕,接下来开始逻辑部分,让删除键起作用,先给删除加上click事件,后在script中写入方法,删除的时候我们得知道删除的是哪一项,这里我们用索引值作为标识,代码如下:

<template>
	<view class="out">
		<view class="item" v-for="(item,index) in goods">
			<checkbox></checkbox>
			<text class="title" >{{item.name}}</text>
			<text class="del" @click="remove(index)">删除</text>
		</view>
	</view>
</template>

<script setup>
import {ref} from "vue" ;
const goods = ref([
	{id:1,name:"索尼"},
	{id:2,name:"摩托罗拉"},
	{id:3,name:"诺基亚"},
	{id:4,name:"LG"},
])
function remove(index){
	goods.value.splice(index,1)
}
</script>

<style lang="scss" scoped>
	     .out{
			 padding: 10px;
		 }  
		 .item{
			 padding: 10px 0;
			  .del{
				  color: #c00;
				  margin-left: 30px;
			  }
		 }
</style>

实际效果:
在这里插入图片描述
成功实现删除,但注意看,在动画中,选中“摩托罗拉”,并将其删除后,“诺基亚”被选中了,这是因为没有key的情况下,Vue在数据项顺序改变时会复用错误的DOM元素,导致页面显示错误。我们给它加上key,key需要具有唯一性,这里给key设置为item.id,代码如下:

<template>
	<view class="out">
		<view class="item" v-for="(item,index) in goods":key = "item.id">
			<checkbox></checkbox>
			<text class="title" >{{item.name}}</text>
			<text class="del" @click="remove(index)">删除</text>
		</view>
	</view>
</template>

<script setup>
import {ref} from "vue" ;
const goods = ref([
	{id:1,name:"索尼"},
	{id:2,name:"摩托罗拉"},
	{id:3,name:"诺基亚"},
	{id:4,name:"LG"},
])
function remove(index){
	goods.value.splice(index,1)
}
</script>

<style lang="scss" scoped>
	     .out{
			 padding: 10px;
		 }  
		 .item{
			 padding: 10px 0;
			  .del{
				  color: #c00;
				  margin-left: 30px;
			  }
		 }
</style>

现在,页面错误的情况解决了:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/784574.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

思路打开!腾讯造了10亿个角色,驱动数据合成!7B模型效果打爆了

世界由形形色色的角色构成&#xff0c;每个角色都拥有独特的知识、经验、兴趣、个性和职业&#xff0c;他们共同制造了丰富多元的知识与文化。 所谓术业有专攻&#xff0c;比如AI科学家专注于构建LLMs,医务工作者们共建庞大的医学知识库&#xff0c;数学家们则偏爱数学公式与定…

论文解析——Full Stack Optimization of Transformer Inference: a Survey

作者及发刊详情 摘要 正文 主要工作贡献 这篇文章的贡献主要有两部分&#xff1a; 分析Transformer的特征&#xff0c;调查高效transformer推理的方法通过应用方法学展现一个DNN加速器生成器Gemmini的case研究 1&#xff09;分析和解析Transformer架构的运行时特性和瓶颈…

人员定位系统的功能,你知道多少呢?

在此前的文章中&#xff0c;说到了人员定位系统用于化工厂定位这一用途来完善工厂管理&#xff0c;但同时&#xff0c;基于人员定位系统的强大功能&#xff0c;该系统的应用范围也要宽范的多&#xff0c;那么&#xff0c;本篇文章就来为大家介绍一下吧。 人员定位系统的功能简介…

阿里云存储的降本增效与运维

小浩负责公司存储架构层&#xff0c;需要确保存储层不会成为公司业务系统的性能瓶颈&#xff0c;让数据读写达到最佳性能。那么小浩可以从哪些方面着手优化性能呢&#xff1f;他继续求助系统架构师大雷。 小浩&#xff1a;雷哥&#xff0c;PD反馈公司系统最近响应很慢&#xff…

电子设备常用的胶水有哪些?

目录 1、502胶水 2、703胶水 3、704胶水 4、AB胶 5、红胶 6、Underfill 7、导电胶 8、UV胶 9、热熔胶 10、环氧树脂胶 11、硅酮胶 12、聚氨酯胶 13、丙烯酸胶 14、丁基胶 1、502胶水 502胶水&#xff0c;也被称为瞬间胶或快干胶&#xff0c;是一种非常常见的粘合…

加密与安全_密钥体系的三个核心目标之不可否认性解决方案

文章目录 Pre概述不可否认性数字签名&#xff08;Digital Signature&#xff09;证书是什么证书使用流程 PKICA证书层级多级证书证书链是如何完成认证的&#xff1f; 其他疑问1. Alice能直接获取Bob的公钥&#xff0c;是否还需要证书&#xff1f;2. 为什么即使能直接获取公钥也…

2-28 基于matlab提取出频域和时域信号的29个特征

基于matlab提取出频域和时域信号的29个特征&#xff0c;主运行文件feature_extraction&#xff0c;fre_statistical_compute和time_statistical_compute分别提取频域和时域的特征&#xff0c;生成的29个特征保存在生成的feature矩阵中。程序已调通&#xff0c;可直接运行。 2-2…

一键高效处理,批量缩放PNG图片,按比例轻松调整,高效工作从此开始!

在数字时代&#xff0c;图片已经成为我们生活中不可或缺的一部分。无论是工作汇报、项目展示还是日常分享&#xff0c;图片都扮演着至关重要的角色。然而&#xff0c;当面对大量需要调整尺寸的PNG图片时&#xff0c;你是否曾经感到过困扰和繁琐&#xff1f; 第一步&#xff0c;…

ViewPager

作用 实现翻页的效果。 1、在activity_main.xml中创建ViewPager <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"…

【Java14】构造器

Java中的构造器在创建对象&#xff08;实例&#xff09;的时候执行初始化。Java类必须包含一个或一个以上的构造器。 Java中的构造器类似C中的构造函数。 Java中对象&#xff08;object&#xff09;的默认初始化规则是&#xff1a; 数值型变量初始化为0&#xff1b;布尔型变量…

为什么KV Cache只需缓存K矩阵和V矩阵,无需缓存Q矩阵?

大家都知道大模型是通过语言序列预测下一个词的概率。假定{ x 1 x_1 x1​&#xff0c; x 2 x_2 x2​&#xff0c; x 3 x_3 x3​&#xff0c;…&#xff0c; x n − 1 x_{n-1} xn−1​}为已知序列&#xff0c;其中 x 1 x_1 x1​&#xff0c; x 2 x_2 x2​&#xff0c; x 3 x_3 x…

EAI四个层次服务-系统架构师(二十六)

1、&#xff08;重点&#xff09;系统应用集成提供了4个不同层次服务&#xff0c;最上层服务是&#xff08;&#xff09;服务。 解析: EAI&#xff08;Enterprise Application Integration&#xff09;系统应用集成&#xff0c;相关概念。 实施EAI必须保证&#xff1a;应用程…

2024年信息素养大赛图形化编程小低组复赛真题-附答案 6547网

2024年全国青少年信息素养大赛图形化编程小低组复赛真题 题目总数&#xff1a;6 总分数&#xff1a;100 第1部分 第 1 题 问答题 【编程实现】点击小绿旗&#xff0c;实现将鱼的所有造型印到舞台区 【具体要求】 1. 将鱼显示出来 全部擦除所有内容 2. 将鱼的造型设…

202488读书笔记|《365日创意文案》——无聊的 到底是这世间, 还是自己?懂得忘却的人才能前进

202488读书笔记|《365日创意文案》——无聊的 到底是这世间&#xff0c; 还是自己&#xff1f;懂得忘却的人才能前进 1月2月3月4月5月6月7月8月9月10月11月12月 《365日创意文案》WRITES PUBLISHING&#xff0c;一些日常&#xff0c;是烟火&#xff0c;也是幸福的印记。 当下也…

二次元转向SLG,B站游戏的破圈之困

文 | 螳螂观察 作者 | 夏至 2023年是B站游戏的滑铁卢&#xff0c;尽管这年B站的游戏营收还有40多亿&#xff0c;但相比去年大幅下降了20%&#xff0c;整整少了10亿&#xff0c;这是过去5年来的最大跌幅&#xff0c;也是陈睿接管B站游戏业务一年以来&#xff0c;在鼻子上碰的第…

超详细版阿里云控制台环境配置+数据库配置

一、登录阿里云控制台 登录阿里云控制台&#xff0c;找到实例&#xff0c;切到阿里云服务器所在地址 &#x1f36d;不知道自己的服务器地址在哪边也没有关系&#xff0c;随便选择一个&#xff0c;查询不到记录的话会有以下提示&#xff0c;可以根据提示进行切换&#xff08;适…

基于docker的prometheus+grafana+altermanager+prometheus-webhook-dingtalk钉钉报警

一、各软件功能简介 prometheus&#xff1a;Prometheus(是由go语言(golang)开发)是一套开源的监控&报警&时间序列数 据库的组合。主要优点&#xff1a;外部依赖安装使用超简单、系统集成 多等 grafana&#xff1a;Grafana 是一款采用 go 语言编写的开源应用&#xff0…

APP明暗主题设置

1.preference.xml 增加一个暗色主题 SwitchPreference 2.每个 Activity 的 setContentView 前面增加 setTheme SharedPreferences sharedPreferences PreferenceManager.getDefaultSharedPreferences(this); if (sharedPreferences.getBoolean("switch_dark_theme"…

uniapp-小程序获取用户位置

1. 需要在微信公众平台进行接口的申请。选择自己需要用的接口。 2. 在app.json文件中配置permission和requiredPrivateInfos。requiredPrivateInfos里面是你需要使用的接口。 3. 配置完成后&#xff0c;就可以使用了。 相关获取位置API的链接 4. 如果要获取当前位置到某一个指…

电商数据仓库

目录 1.数据仓库的数据来源为业务数据库&#xff08;mysql&#xff09; 初始化脚本 2.通过sqoop将mysql中的业务数据导入到大数据平台&#xff08;hive&#xff09; 在hive中建立映射的数据库 导入数据 3.通过hive进行数据计算和数据分析 形成数据报表 补全用户信息表中的…