学习Vue的key作用和原理

news2024/11/25 22:25:49

今天主要学习了列表渲染和key的作用和原理,先来说说列表渲染,顾名思义想要渲染列表最快的方式就是使用for循环,我们要学习的就是Vue中对标签实现for循环的语法,它和我们传统的js语法有些不同,它是先要有Vue实例中data的数据再拿过来遍历,遍历时同样可以获得元素和元素的索引号,这里有个很重要的点就是Vue要求你传入一个属于元素唯一的值(:key),这个值在开发中一般是从后端获取的,Vue需要拿这个唯一的key来做底层的对比算法,这也是等下要说到的key的底层原理,Vue提供的for循环不但可以遍历最常用的数组,同样还可以变量对象、字符串,还可以指定循环的次数,但这些都相对比较少用。接下来说的就是Vue中的key了,这也是Vue中很重要的底层原理,出去面试时也会经常被问到的问题,首先我们要知道每一个元素都要有一个唯一key值,就算我们不写,Vue也会自动为元素生成,那为什么要有key呢?这就要从刚开始学习Vue说起了,我们都知道Vue会给节点元素生成一个虚拟DOM模板(这里就需要给每个元素都绑定一个唯一的key值),然后我们每次改动或更新Vue实例里面的数据时,Vue就会生成一个新的虚拟DOM模板,然后拿新的模板和旧的模板作对比,因为Vue是没有办法知道哪个元素有没有改变或更新,这里的对比就需要用到刚才说到的key,有了唯一key就相当于每个元素都拥有了自己的身份证,这样Vue就可以拿着这个身份证找到身份证旧的内容再和现在新的内容做对比(这就是Vue的diff对比算法),如果内容没变就使用就的旧模板已经生成好的真实DOM,如果内容变了就先生成虚拟DOM再渲染成真实DOM到页面上,还有一种情况就是压根就没找到key有旧的模板,这时就说明该元素是新添的,直接生成虚拟DOM再渲染成真实DOM到页面上即可。这种底层的代码复用率,可以大大的提高性能和效率,初学时代码量少,基本上看不出性能上的区别,一旦代码多差距就很明显了。

Untitled

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

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

相关文章

力扣热题100道-双指针篇

文章目录 双指针283.移动零11.盛最多水的容器15.三数之和42.接雨水 双指针 283.移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 …

C语言 volatile关键字

volatile关键字介绍 volatile 是一个关键字,用于修饰变量,表示该变量是易变的,即可能在任何时候被意外地改变。在多线程编程中,当多个线程同时访问同一个变量时,由于线程之间的交互和优化,可能会导致变量的…

亚信安慧AntDB数据库——通信运营商核心系统的全面演进

AntDB数据库源自通信运营商核心系统,经过15年的平稳运行和不断演进,成功跟随通信技术的升级步伐,逐步迈向5G时代,并且在这期间完成了8次大版本的迭代,为行业树立了技术领先的典范。其独特之处在于具备超融合架构&#…

vue本地缓存搜索记录(最多4条)

核心代码 //保存到搜索历史,最多存四个 item.name和item.code格式为:塞力斯000001var history uni.getStorageSync(history) || [];console.log("history", history)var index history.findIndex((items) > {return item.name items.nam…

通过nginx配置防御web漏洞

一、常见web漏洞 二、nginx防御策略: 要使用Nginx配置防御Web漏洞,可以采取以下措施: 禁用不必要的HTTP方法:Nginx默认启用了许多HTTP方法,如PUT、DELETE等。可以通过在Nginx配置中禁用不必要的HTTP方法来减少潜在的安…

Vue - 使用Element UI Upload / importExcelJs进行文件导入

1 情景一 需求背景:后端配合,点击"导入"按钮,弹出“导入”弹窗,将电脑本地Excel表格数据导入到页面中表格位置(需要调用后端接口),而页面中表格通过后端接口获取最新数据。 实现思路…

学python一定要下载python吗,学python都需要什么软件

大家好,本文将围绕想学python都要下载什么软件展开说明,初学python需要安装什么软件是一个很多人都想弄明白的事情,想搞清楚学python一定要下载python吗需要先了解以下几个事情。 工欲善其事必先利其器。初学者在学Python的时候,往…

雷军称小米汽车不可能卖 9 万 9;杭州破获重大勒索病毒案丨 RTE 开发者日报 Vol.116

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

thinkphp+vue_mysql汽车租赁管理系统1ma2x

运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框架:Thinkphp5 前端框架:vue.js 服务器:apache 数据库:mysql 数据库工具:Navicat/phpmyadmin 课题主要分为三大模块:即管理员模块、用户模块…

优维携手深职大共建“中国高校‘双碳’技能仿真操作系统”!

优维“双碳”战略合作高校 优维科技与深圳职业技术大学碳中和技术研究院(深职碳研院)签署战略合作协议,深化产学研,聚力创新“双碳”发展。在“双碳”目标大背景下,优维科技和深职碳研院将携手共同开发中国高校“双碳…

Django(四)

1.数据库操作 MySQL数据库 pymysql import pymysql# 1.连接MySQL conn pymysql.connect(host"127.0.0.1", port3306, userroot, passwd"root123", charsetutf8, dbunicom) cursor conn.cursor(cursorpymysql.cursors.DictCursor)# 2.发送指令 cursor.…

{MySQL} 数据库约束 表的关系 新增删除 修改 查询

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数据库约束1.1约束类型:1.2 NULL约束1.3unique 唯一约束1.4 DEFAULT:默认值约束1.5 PRIMARY KEY:主键约束1.6 FOREIGN K…

Flowable中6种部署方式

1. addClasspathResource src/main/resources/processes/LeaveProcess.bpmn20.xml Deployment deploy repositoryService.createDeployment().name("请假审批").addClasspathResource("processes/LeaveProcess.bpmn20.xml").deploy();2. addInputStream…

QCheckBoxQRadioBoxQComboBoxQSlider

QCheckBox QCheckBox 是 Qt 框架中一个常用的控件,用于创建一个可以勾选或取消勾选的复选框。它通常用于表示选项的开/关状态 autoExclusive 是一个与单选按钮(QRadioButton)相关的属性。这个属性决定了同一个父窗口下的单选按钮是否自动形成…

利用NPS跟踪客户忠诚度:问卷调查实用指南与技巧分享

许多营销人员表示,净推荐值(NPS)是任何行业成功的主要衡量标准。同时,它也是衡量客户忠诚度的绝佳工具。我们可以将NPS问题引入问卷调查中,从而获取出真实的数据。NPS是怎么衡量顾客的?NPS将顾客分为推荐者…

力扣刷题记录(21)LeetCode:121、123、188、309

目录 121. 买卖股票的最佳时机 123. 买卖股票的最佳时机 III 188. 买卖股票的最佳时机 IV 309. 买卖股票的最佳时机含冷冻期 如果某一天出售股票可以得到最大利润,那么股票买入的价格一定是这天之前股票的最低价格。 所以我们可以在遍历股票价格的时候不断更新股…

OCP NVME SSD规范解读-4.NVMe IO命令-2

NVMe-IO-3: 由于设备具有掉电保护功能(如Power Loss Protection,PLP),因此在以下情况下,性能不应降低: FUA(Force Unit Access):是计算机存储设备中的一种命…

《别让猴子跳回背上》——管理者的时间管理

讲时间管理的书很多,但这本是专门讲给管理者的时间管理。 在职场中,许多管理者都会碰到工作计划执行不下去、组织目标难于实现的问题,搭进了自己所有可以支配的时间,仍旧是焦头烂额,顾此失彼;而下属则因为…

Linux 线程安全 (2)

文章目录 线程同步概念条件变量使用生产消费模型信号量的使用读写锁的使用 Linux 线程安全 (1) 线程同步概念 竞态条件:因为时序问题,而导致程序异常. 饥饿问题:只使用互相锁保证线程安全时,锁资源总被某…

web三层架构

目录 1.什么是三层架构 2.运用三层架构的目的 2.1规范代码 2.2解耦 2.3代码的复用和劳动成本的减少 3.各个层次的任务 3.1web层(表现层) 3.2service 层(业务逻辑层) 3.3dao 持久层(数据访问层) 4.结合mybatis简单实例演示 1.什么是三层架构 三层架构就是把…