vue中的key值

news2025/7/30 19:25:04

1. 什么是key?

当我们对一个数据进行遍历生成DOM时,vue的内部会根据索引号对其进行key的定义,而key会作为每一个新生成DOM的唯一标识。

2.为什么不建议索引值作为key?

很多人喜欢直接使用索引值作为key,当所遍历的数据不会发生变化的时候使用索引值作为key也确实不会出现什么问题,但是如果对数据头部进行插入操作的话,则会出现数据不能互相对应的问题;

a. 代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <form @submit.prevent="AddData" v-if="isuse">
            id: <input type="text" v-model="person.id">
            name: <input type="text" v-model="person.name">
            age: <input type="text" v-model="person.age">
            <input type="submit" value="新增"></button>
        </form>
        <h2>人员列表</h2>
        <ul>
            <li v-for="(person,index) in persons">{{person.name}}-{{person.age}}<input type="text"></li>
            
        </ul>
    </div>
    <script>
        new Vue({
            el: '#root',
            data: {
                persons: [
                    { id: '001', name: '张三', age: 18 },
                    { id: '002', name: '李四', age: 19 },
                    { id: '003', name: '王五', age: 20 },
                ],
                person:{
                    id: '',
                    name: '',
                    age: null
                },
                isuse:true
            },
            methods: {
                AddData() {
                    this.persons.unshift(this.person)
                    this.isuse = false
                }
            }
        })
    </script>
</body>
</html>

b. 效果图:

在这里插入图片描述

c. 在文本框输入文字,如下:

在这里插入图片描述

d. 再新增一个人员,会出现下图这种情况:

在这里插入图片描述

e. 很明显对应的输入框已经出现了错乱。

出现这种情况的原因很简单,就是索引值的问题,因为我们在进行插入数据时使用的是unshift() ,即在数组头部插入数据;

而persons数组中原有的数据的索引值都后置了一位,而DOM中的输入框还是绑定着原来的key,也就是说输入框认定的位置是相对应的key而不是li,所以会出现元素对应错乱的问题。

3.应该取用什么作为key值?

在设计数据对象的时候应该设有一个唯一标识作为key,比如编号、手机号、身份证之类不会出现重复的数据,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <form @submit.prevent="AddData" v-if="isuse">
            id: <input type="text" v-model="person.id">
            name: <input type="text" v-model="person.name">
            age: <input type="text" v-model="person.age">
            <input type="submit" value="新增"></button>
        </form>
        <h2>人员列表</h2>
        <ul>
            <li v-for="(person,index) in persons" :key="person.id">{{person.name}}-{{person.age}}<input type="text"></li>
            
        </ul>
    </div>
    <script>
        new Vue({
            el: '#root',
            data: {
                persons: [
                    { id: '001', name: '张三', age: 18 },
                    { id: '002', name: '李四', age: 19 },
                    { id: '003', name: '王五', age: 20 },
                ],
                person:{
                    id: '',
                    name: '',
                    age: null
                },
                isuse:true
            },
            methods: {
                AddData() {
                    this.persons.unshift(this.person)
                    this.isuse = false
                }
            }
        })
    </script>
</body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目缓存问题处理

1、public/index.html文件头部配置 <meta http-equiv"pragram" content"no-cache"> <meta http-equiv"cache-control" content"no-cache,no-store,must-revalidate"> <meta http-equiv"expires" content&…

Video 标签无法播放 mp4 的原因和解决办法

问题 用 QQ 的截图录屏功能录制的 mp4 视频&#xff0c;无法用 <video> 标签正常播放。 原因 通过搜索的说法是&#xff1a; 查阅文档&#xff08;不知道是啥文档&#xff09;&#xff0c;关于video标签所支持的视频格式和编码&#xff1a; MPEG4 带有H.264视频编码和…

【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅰ——理论,实验拓扑和安装基于RemoteAPP的RDS

目录1. 理论1.1 什么是远程桌面服务2. 实验拓扑2.1 拓扑说明3. 安装基于RemoteAPP的RDS关联博文1. 理论 1.1 什么是远程桌面服务 远程桌面服务 (RDS) 是一个卓越的平台&#xff0c;可以生成虚拟化解决方案来满足每个最终客户的需求&#xff0c;包括交付独立的虚拟化应用程序、…

茂名市 2021 年高中信息技术学科素养展评

没事干&#xff0c;发一下去年去比赛的题目。 目录 第一题 30分 第二题 30分 第一题 30分 题目&#xff1a; “姐姐&#xff0c;乘除法运算太难了&#xff0c;有什么办法能熟练掌握吗&#xff1f;”今年 读小学四年级的表弟向李红求救。为了提高表弟的运算能力&#xff0c;…

Candence allegro 创建等长的方法

随着源同步时序电路的发展,越来越多的并行总线开始采用这种时序控制电路,最典型的代表当属目前炙手可热的DDRx系列。下图这种点到点结构的同步信号,对于攻城狮来说,设置等长约束就非常easy了图片。 But,对于有4、6、8、、、等多颗DDR芯片的ACC同步信号来说,要设置等长约束…

在Excel中按条件筛选数据并存入新的表

案例 老板想要看去年每月领料数量大于1000的数据。手动筛选并复制粘贴出来,需要重复操作12次,实在太麻烦了,还是让Python来做吧。磨刀不误砍柴工,先整理一下思路: 1读取原表,将数量大于1000的数据所对应的行整行提取(如同在excel表中按数字筛选大于1000的) 2将提取的数…

Mysql安装和基本使用

MySQLMySQL 是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统&#xff0c;关联数据库将数据保存在不同的表中&#xff0c;而不是将所有数据放在一个大仓库内&#xff0c;这样就增加了速度并提…

Linux 驱动基础

注册驱动模块时给模块传递参数 在一些情况下&#xff0c;我们要动态的改变驱动中某个变量的值&#xff0c;那么就可以在注册时给驱动模块传递参数。 给驱动模块中传递参数&#xff0c;需要定义好接受参数值的全局变量&#xff0c;并调用module_param 来引用它&#xff0c;具体…

Spring架构篇--2.6 远程通信基础--Rpc-Socket实战篇

前言&#xff1a;微服务之间怎么通过socket完成通信&#xff1b;本文通过demo 展示微服务如何通过socket 完成服务之间的通信&#xff1b; 1 使用maven新建两个springboot 服务&#xff1a;模拟实现订单通过订单号获取商品信息&#xff1a; 1.1 创建建springboot 项目后&…

1080T、2080T、4070T显卡的深度学习性能测试和结论

先说结论&#xff1a; 4070T显卡FP32的训练和推理速度跟3090应该基本类似。但由于显存12G偏低&#xff0c;4070T不太适合如今的深度学习模型训练&#xff08;新手列外&#xff0c;大部分模型都能训练起来&#xff0c;耗电也相对很低&#xff09;&#xff0c;更适合测试最新的一…

记录一次ubuntu下配置ssh登录出现的问题

现象描述: 1. 配置完服务器端公钥和本地的私钥之后&#xff0c;ssh登录始终会让输入密码&#xff0c;用ssh -vvv rootip 查看发现发送密钥之后就没反应了。 本机debug info: debug1: Trying private key: C:\Users\wangc/.ssh/id_xxxx &#xff08;私钥文件&#xff09; debug3…

每日站会如何进行优化流程,更高效?

1、每日站会时间要求 每日站会是开发团队一个以15分钟为限的活动。每日站会每一天的上午9点准时在会议室举行。开会时间需要把握精准&#xff0c;并需要每天坚持进行站会讨论活动。 每日站会如何进行优化流程&#xff0c;更高效&#xff1f;​ 2、团队中站会的角色和职责…

Unity(三)--导入3d模型并实现UGUI界面上嵌入3d模型

Unity支持的常用模型格式及建模软件: 格式建模软件网格动画材质骨骼FBX3DMax,C4D,Blender,Maya等√√√√OBJ3DMax,C4D,Blender,Maya等√目录 导入模型并调整好位置创建2D场景(UGUI)使3d模型显示在图片前面方法一:使用Render Texture注意点导入模型并调整好位置 以FBX为例,…

SAP MM 物料管理模块入门学习笔记 2023.2.24

https://zhuanlan.zhihu.com/p/555022893 SAP 企业组织结构 SAP 物料管理模块企业组织结构从上到下分为 集团——》公司——》工厂——》库存地点 集团&#xff1a;SAP 系统组织结构最高级别&#xff1a;内部包括一个完整的SAP系统全部数据 公司代码&#xff1a; 标识集团内一…

【Kubernetes 企业项目实战】09、Rancher 2.6 管理 k8s-v1.23 及以上版本高可用集群

目录 一、Rancher 介绍 1.1Rancher简介 1.2 Rancher 和 k8s 的区别 1.3 Rancher 企业使用案例 二、安装 Rancher 2.1 初始化环境 2.2 安装 Rancher 2.3 登录 Rancher 平台 三、通过 Rancher 管理已存在的 k8s 集群 3.1 配置 rancher 3.2 导入 k8s ​四、通过 Ranc…

啊哈 算法读书笔记 第 1 章 一大波数正在靠近——排序

目录 排序算法&#xff1a; 时间复杂度&#xff1a; 排序算法和冒泡排序之间的过渡&#xff1a; 冒泡排序 冒泡排序和快速排序之间的过渡&#xff1a; 快速排序 排序算法&#xff1a; 首先出场的是我们的主人公小哼&#xff0c;上面这个可爱的娃就是啦。期末考试完了老…

安装Ffmpeg音视频编解码工具和搭建EasyDarwin开源流媒体服务器

目录 一&#xff0c;安装Ffmpeg音视频编解码工具 1&#xff0c;简介 2&#xff0c;开发文档 3&#xff0c;安装部署 二&#xff0c;搭建EasyDarwin开源流媒体服务器 1&#xff0c;简介 2&#xff0c;主要功能特点 3&#xff0c;安装部署 4&#xff0c;效果图 三&…

「mysql是怎样运行的」第17章 调节磁盘和CPU的矛盾---InnoDB的BufferPool

「mysql是怎样运行的」第17章 调节磁盘和CPU的矛盾—InnoDB的Buffer Pool 文章目录「mysql是怎样运行的」第17章 调节磁盘和CPU的矛盾---InnoDB的Buffer Pool[toc]一、缓存的重要性二、InnoDB的Buffer Pool2.1 啥是Buffer Pool2.2 Buffer Pool内部组成2.3 free链表的管理2.4 缓…

Sallen-Key二阶低通滤波器——设计问题浅析

目录前言1 Sallen-Key二阶低通滤波器结构2 截止频率3 结语前言 这两天接了个简单的活&#xff0c;关于设计一个Sallen-Key二阶低通滤波器&#xff0c;有一些体会。 1 Sallen-Key二阶低通滤波器结构 这个结构很简单&#xff0c;优势就是在于简易实现二阶低通。这种类电压跟随器…

第九届蓝桥杯省赛 C++ B组 - 日志统计

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;日志统计 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥杯的小伙伴整理常考算法题解&#xff0c;祝大家…