【购物车案例】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>

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.8-word2vec的改进

文章目录 1问题分析一2改进一之Embedding层2.1 Embedding层的实际作用2.2数组切片获取某行的操作2.3 Embedding层的实现2.3.1初始化2.3.2前向计算2.3.3反向传播 3问题分析二4改进二之将多分类变为二分类4.1二分类问题4.1.1概率转换与损失计算4.1.2反向传播4.1.3多分类与二分类的…

2025 百度提前批校招内推

百度2025校园招聘内推开始啦&#xff0c;被推荐人可以免笔试直接面试&#xff0c;提前批结果不影响校招&#xff0c;机会1&#xff0c;还可直推心仪部门&#xff0c;可扫描下面二维码或点击链接进行投递&#xff0c;快来投递你心仪的职位吧&#xff08; 网申链接地址 &#xff…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十)-git(2)

下面是一些git的常用命令和基本操作&#xff0c;可以当做平常的笔记查询&#xff0c;用于学习&#xff01;&#xff01;&#xff01; 文章目录 前言 一、git 二、git常用命令 总结 前言 下面是一些git的常用命令和基本操作&#xff0c;可以当做平常的笔记查询&#xff0c;用于…

第十四届蓝桥杯省赛C++B组F题【岛屿个数】题解(AC)

题目大意 给定一个 01 地图&#xff0c;分别表示陆地和海&#xff0c;问地图中一共有多少块岛屿&#xff1f;另外&#xff0c;若一个岛屿在另一个岛屿的内部&#xff0c;则不统计。如下图中的大岛屿包含着内部的小岛屿&#xff0c;故内部小岛屿不计算&#xff0c;最终输出 1。…

小米引入OceanBase数据库,试点业务数据库性能实现2-3倍提升

近日&#xff0c;小米集团确认在部分业务系统上使用蚂蚁集团自主研发的OceanBase数据库。小米智能制造依托OceanBase所提供的原生分布式数据库能力&#xff0c;对试点业务系统进行升级&#xff0c;并已稳定运行数月&#xff0c;不仅确保了业务连续性&#xff0c;还实现了性能的…

Angular进阶之九: JS code coverage是如何运作的

环境准备 需要用到的包 node 18.16.0# Javascript 代码编辑"babel/core": "^7.24.7","babel/preset-env": "^7.24.7","babel-loader": "^9.1.3",# 打包时使用的 module&#xff0c; 给代码中注入新的方法# http…

【见刊通知】MVIPIT 2023机器视觉、图像处理与影像技术国际会议

MVIPIT 2023&#xff1a;https://ieeexplore.ieee.org/xpl/conhome/10578343/proceeding 入库Ei数据库需等20-50天左右 第二届会议征稿启动&#xff08;MVIPIT 2024&#xff09; The 2nd International Conference on Machine Vision, Image Processing & Imaging Techn…

解析Xml文件并修改QDomDocument的值

背景&#xff1a; 我需要解决一个bug&#xff0c;需要我从xml中读取数据到QDomDocument&#xff0c;然后获取到我想要的目标信息&#xff0c;然后修改该信息。 ---------------------------------------------------------------------------------------------------------…

后端之路——登录校验前言(Cookie\ Session\ JWT令牌)

前言&#xff1a;Servlet 【登录校验】这个功能技术的基础是【会话技术】&#xff0c;那么在讲【会话技术】的时候必然要谈到【Cookie】和【Session】这两个东西&#xff0c;那么在这之前必须要先讲一下一个很重要但是很多人都会忽略的一个知识点&#xff1a;【Servlet】 什么是…

STM32-外部中断浅析

本篇解释了STM32中断原理 MCU为什么需要中断 中断&#xff0c;是嵌入式系统中很重要的一个功能&#xff0c;在系统运行过程中&#xff0c;当出现需要立刻处理的情况时&#xff0c;暂停当前任务&#xff0c;转而处理紧急任务&#xff0c;处理完毕后&#xff0c;恢复之前的任务…

vue3项目图片压缩+rem+自动重启等plugin使用与打包配置

一、Svg配置 每次引入一张 SVG 图片都需要写一次相对路径&#xff0c;并且对 SVG 图片进行压缩优化也不够方便。 vite-svg-loader插件加载SVG文件作为Vue组件&#xff0c;使用SVGO进行优化。 插件网站https://www.npmjs.com/package/vite-svg-loader 1. 安装 pnpm i vite-svg…

谷粒商城学习笔记-使用renren-fast-vue框架时安装依赖包遇到的问题及解决策略

文章目录 1&#xff0c;npm error Class extends value undefined is not a constuctor or null2&#xff0c;npm warn cli npm v10.8.1 does not support Node.js v16.20.2.3&#xff0c;npm error code CERT_HAS_EXPIRED学习心得 这篇文章记录下使用renren-fast-vue&#xff…

Unity3D游戏 RPG

丛林探险游戏 人物进行探险游戏 拥有登录&#xff0c;首页&#xff0c;3D物体旋转浏览的功能&#xff0c;还能进行种植树等功能

11 个例子讲清spark提交命令参数

目录 提交命名参数详情为什么有这么多参数如何开始学习一些具体的例子1. 基本的Spark应用提交2. 提交带有依赖的Python脚本3. 运行Spark SQL作业4. 提交Spark Streaming作业5. 使用外部包运行Spark作业6. 动态资源分配7. 使用多个配置文件8. GPU 支持9. 自定义日志配置10. 使用…

swiftui中NavigationStack布局navigationBarTitleDisplayMode作用,以及内容顶部空白区域解决办法

写了一个小demo用于学习NavigationStack和toolbar/ToolbarItem知识&#xff0c;但是在写一个瀑布流布局的时候&#xff0c;设置了顶部的toolbar&#xff0c;然后内容区域的顶部出现了一大片空白区域&#xff0c;这样的效果并不是很美观很好看&#xff0c;所以就想着研究解决一下…

人工智能的新时代:从模型到应用的转变

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Chrome 127内置AI大模型攻略

Chrome 127 集成Gemini:本地AI功能 Google将Gemini大模型整合进Chrome浏览器,带来全新免费的本地AI体验: 完全免费、无限制使用支持离线运行,摆脱网络依赖功能涵盖图像识别、自然语言处理、智能推荐等中国大陆需要借助魔法,懂都懂。 安装部署步骤: 1. Chrome V127 dev …

城市地下综合管廊物联网远程监控

城市地下综合管廊物联网远程监控 城市地下综合管廊&#xff0c;作为现代都市基础设施的重要组成部分&#xff0c;其物联网远程监控系统的构建是实现智慧城市建设的关键环节。这一系统集成了先进的信息技术、传感器技术、通信技术和数据处理技术&#xff0c;旨在对埋设于地下的…

数据分析与挖掘实战案例-电商产品评论数据情感分析

数据分析与挖掘实战案例-电商产品评论数据情感分析 文章目录 数据分析与挖掘实战案例-电商产品评论数据情感分析1. 背景与挖掘目标2. 分析方法与过程2.1 评论预处理1. 评论去重2. 数据清洗 2.2 评论分词1. 分词、词性标注、去除停用词2. 提取含名词的评论3. 绘制词云查看分词效…

Java---包装类与泛型

1.包装类 1.1 包装类 在Java中&#xff0c;由于基本数据类型不是继承Object类&#xff0c;为了在泛型代码中可以支持基本数据类型&#xff0c;Java给每个基本数据类型各自提供了一个包装类。 如下图 除了char和int基本数据类型的包装类型有点特别&#xff0c;其他的都是首字…