v-for中涉及的key

一、为什么要用key?

  1. key可以标识列表中每个元素的唯一性,方便Vue高效地更新虚拟DOM;
  2. key主要用于dom diff算法,diff算法是同级比较,比较当前标签上的key和标签名,如果都一样,就只移动元素,不会重新创建和删除;
  3. 如果没有key,Vue会使用“就地复用”策略,如果数据项的顺序改变,Vue不会移动DOM元素来匹配数据项的改变,而是简单复用原来位置的每个元素。
<template>
  <div class="about">
    <ul>
      <li v-for="(item, index) in cityLists">
        <input type="checkbox" :value="item.city" />
        {{ item.city }}
      </li>
      <button @click="remove">删除</button>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      cityLists: [
        { id: 1, city: "深圳" },
        { id: 2, city: "广州" },
        { id: 3, city: "东莞" },
      ],
    };
  },
  methods: {
    remove() {
      //注意这里是shift 如果做添加(unshift)也是同样的问题
      this.cityLists.shift();
    },
  },
};
</script>

                                                                                                

如上代码和运行展示,勾选了“深圳”,点击删除的话 ,有key且key不是index的话就可以把“深圳 ”和选中的标识删掉。这里没有正确的设置key,因为标签名都是input,“广州”就直接上去复用了“深圳”的位置,还把人家勾选的标识都复用了。

                                                

选中了“东莞”,点击删除第一个“深圳”,“东莞”的选中标识没了,就是“广州”和“东莞”往上复用了位置。

二、为什么尽量不要使用索引值index作为key?

要是key用index的话运行展示就会和上面的一样,因为index会随着数据的增删而改变,导致key失效。最好使用数据中的唯一标识,如id等,这样当数组发生变化时,就可以根据key来正确地更新和移动对应的元素,而不是重新渲染整个列表。

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

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

相关文章

(十二)C++自制植物大战僵尸游戏多用户存档实现(一)

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs 游戏存档 游戏存档允许玩家保存游戏进度&#xff0c;以便在之后的时间继续游戏。通过存档&#xff0c;玩家可以暂停游戏并在需要时重新开始&#xff0c;而不必从头开始或重新完成已经完成的任务。游戏通常提供多个…

VAR:自回归家族文生图新SOTA,ImageNet上超越Diffusion与DiTs

一、背景&#xff1a; 在人工智能领域&#xff0c;尤其是计算机视觉和自然语言处理中&#xff0c;自回归&#xff08;AR&#xff09;大型模型&#xff08;如GPT系列&#xff09;因其强大的生成能力和在多种任务上的通用性而受到广泛关注。这些模型通过自监督学习策略&#xff0…

PMP有用吗,PMP含金量,如何转型项目经理?

为什么要学习PMP知识&#xff0c;PMP培训哪家好&#xff1f; IT行业项目管理一枚&#xff0c;曾在做技术的时候对自己的职业发展越来越迷茫&#xff0c;不想干到35岁就参与到失业潮中&#xff0c;一直在想着办法提升自己的能力和竞争力&#xff0c;直到了解到了PMP认证。也就是…

二维码门楼牌管理应用平台建设:场所维护的新篇章

文章目录 前言一、二维码门楼牌管理应用平台的兴起二、民警与网格员的角色定位三、场所信息审核的重要性四、技术支持与创新应用五、未来展望与挑战 前言 随着信息技术的飞速发展&#xff0c;二维码门楼牌管理应用平台的建设正成为城市管理的新宠。该平台不仅提高了场所管理的…

HR招聘人才测评,如何考察候选人的内驱力?

HR的日常招聘工作中&#xff0c;如何去评估候选人的内驱力。人的内驱力&#xff0c;在职业生涯中&#xff0c;是极为重要的品质&#xff0c;也被列入综合素质测评。 内驱力&#xff0c;是指一个人出于内心深处的热情和追求&#xff0c;自发驱动自己持续学习、不断进步&#xf…

jenkins从节点配置说明

目的 打包构建时使用从节点&#xff0c;从节点所在服务器配置4C8G5000G&#xff08;服务器2&#xff09; 前提 首先在服务器1上部署jenkins服务&#xff0c;即主节点&#xff0c;默认节点名称为master 步骤 1&#xff09;登录进入jenkins平台&#xff0c;在系统设置中&…

项目风采展示【车酷-保时捷第二屏】

桌面功能介绍&#xff1a; 1&#xff1a;支持本地app桌面展示 2&#xff1a;支持本地音乐控制

LeetCode 每日一题 Day 123-136

1379. 找出克隆二叉树中的相同节点 给你两棵二叉树&#xff0c;原始树 original 和克隆树 cloned&#xff0c;以及一个位于原始树 original 中的目标节点 target。 其中&#xff0c;克隆树 cloned 是原始树 original 的一个 副本 。 请找出在树 cloned 中&#xff0c;与 tar…

自学Java的第二十四次笔记

一,方法重载 1.基本介绍 java 中允许同一个类中&#xff0c;多个同名方法的存在&#xff0c;但要求 形参列表不一致&#xff01; 比如&#xff1a; System.out.println(); out 是 PrintStream 类型 2.重载的好处 1) 减轻了起名的麻烦 2) 减轻了记名的麻烦 3.快速入门案…

git 小记

一、 github新建仓库 git clone 。。。。。。。。。。。 &#xff08;增删查补&#xff0c;修改&#xff09; git add . git commit -m "修改” git push (git push main) 二、branch 分支 branch并不难理解&#xff0c;你只要想像将代码拷贝到不同目录…

Modality-Aware Contrastive Instance Learning with Self-Distillation ... 论文阅读

Modality-Aware Contrastive Instance Learning with Self-Distillation for Weakly-Supervised Audio-Visual Violence Detection 论文阅读 ABSTRACT1 INTRODUCTION2 RELATEDWORKS2.1 Weakly-Supervised Violence Detection2.2 Contrastive Learning2.3 Cross-Modality Knowle…

盲人安全导航技巧:科技赋能让出行更自如

作为一名资深记者&#xff0c;长期关注并报道无障碍领域的发展动态。今日&#xff0c;我将聚焦盲人安全导航技巧&#xff0c;探讨这一主题下科技如何赋能视障人士实现更为安全、独立的出行。一款融合了实时避障、拍照识别物体及场景功能的盲人出行辅助应用叫做蝙蝠避障&#xf…

软考 - 系统架构设计师 - Web 应用真题(2)

问题 1&#xff1a; 淘汰策略&#xff1a;遗留系统技术含量低&#xff0c;业务价值也低&#xff0c;所以需要全面重新开发一个系统来替代遗留系&#xff1b;&#xff08;一般是企业的业务发生了根本变化&#xff0c;遗留系统已经基本不再适应企业运作的需要&#xff1b;或者是遗…

C语言进阶课程学习记录-数组指针和指针数组分析

C语言进阶课程学习记录-数组指针和指针数组分析 实验-数组指针的大小实验-指针数组小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 实验-数组指针的大小 #include <stdio.h>typedef int(AINT…

【微信小程序之分包】

微信小程序之分包 什么是分包分包的好处分包前的结构图分包后的结构图分包的加载规则分包的体积限制使用分包打包原则引用原则独立分包独立分包的配置方法独立分包的引用原则分包预下载配置分包的预下载分包预下载限制 什么是分包 分包指的是把一个完整小程序项目&#xff0c;…

理想低通滤波器

理想低通滤波器&#xff0c;振铃现象是因为sinc函数&#xff0c;而sinc函数是因为例4.1的简单函数的傅里叶变换得到的。经过我的计算&#xff0c;简单函数的傅里叶反变换也得到sinc函数。这里的频率域滤波器因为是二个值的&#xff0c;所以类似简单函数&#xff0c;反变换之后得…

DRV8711驱动器的各寄存器的介绍

一、CTRL Register (Address = 0x00) ISENSE放大器增益设置:设定值越大时,表示在任何频率的指令脉冲下,位置滞后量越小;位置环的前馈增益大,控制系统的高速响应特性提高,但会使系统的位置不稳定,容易产生振荡; 死亡时间设置:电机驱动死区时间指的是在电机的控制信号由…

AI智能体技术突破:引领科技新浪潮

AI智能体技术突破&#xff1a;引领科技新浪潮 基于大模型的 AI Agent 工作流基于大模型的 AI Agent 工作流效果AI Agent 的四种设计模式Reflection 反思设计模式Tool use 工具使用设计模式Planning 规划设计模式Multiagent collaboration 多智能体协作设计模式 吴恩达在红杉美国…

Python可视化-matplotlib用法详解(一)

一、折线图绘制 import pandas as pds./../../data//unrate.csv unrate pd.read_csv(s) # 时间格式转换&#xff0c; unrate[DATE] pd.to_datetime(unrate[DATE]) print(unrate.head(12))DATE VALUE 0 1948-01-01 3.4 1 1948-02-01 3.8 2 1948-03-01 4.0 3 19…

C++ | Leetcode C++题解之第31题下一个排列

题目&#xff1a; 题解&#xff1a; class Solution { public:void nextPermutation(vector<int>& nums) {int i nums.size() - 2;while (i > 0 && nums[i] > nums[i 1]) {i--;}if (i > 0) {int j nums.size() - 1;while (j > 0 && …