首页 > 其他分享 >vue列表渲染之for循环

vue列表渲染之for循环

时间:2023-04-14 16:14:58浏览次数:42  
标签:vue DOM 渲染 列表 虚拟 key 逆序

vue列表渲染之for循环

前端开发中,如果涉及列表渲染,都会提示或要求每个列表项使用唯一的 key,那很多开发者就会直接使用数组的 index 作为 key 的值,而并不知道 key 的原理。那么以下会讲解 key 的作用以及为什么最好不要使用 index 作为 key 的属性值。

1、作用

在虚拟DOM中,key是虚拟DOM对象的标识,当数据发生变化是,vue会根据新的数据生成新的虚拟DOM,随后Vue进行新的虚拟DOM与旧的DOM的差异比较(diff算法)。对比规则如下:

(1)如果旧虚拟DOM中找到了与新虚拟DOM相同的key:

​ ①.若虚拟DOM中内容没变, 直接使用之前的真实DOM!
​ ②.若虚拟DOM中内容变了, 则生成新的真实DOM,随后替换掉页面中之前的真实DOM。

(2)如果旧虚拟DOM中找到了与新虚拟DOM相同的key:

​ 创建新的真实DOM,随后渲染到到页面。

2、用index作为key可能会引发的问题

(1)性能消耗:若对原数据进行,逆序添加、逆序操作等破坏数组顺序的操作,则会产生没有必要的真实DOM更新,界面会呈现应有的效果,但是效率低,需要底层进行多余的新旧DOM对比,导致部分节点无法复用。

(2)数据错位:如果结构中包含输入类的DOM,那么则会产生错误的DOM更新,会产生界面数据错乱问题。

3、如何选择key

(1)推荐使用每条数据的唯一标识作为key,比如id,手机号,工号等唯一值。

(2)如果不存在对数据的逆序添加,逆序删除等破坏数组顺序的操作,仅用于渲染列表用于展示,使用index作为key是没有问题的。

标签:vue,DOM,渲染,列表,虚拟,key,逆序
From: https://www.cnblogs.com/DTCLOUD/p/17318606.html

相关文章

  • vue通过Export2Excel.js进行导入excel,获取数据
    <!--封装的模板下载和导入按钮和功能组件--><template><spanstyle="margin-left:10px"><el-buttonsize="mini"class="el-icon-download"@click="downFiles">下载模板</el-button><el-upload......
  • Vue2总结
    笔记脚手架文件结构├──node_modules├──public│├──favicon.ico:页签图标│└──index.html:主页面├──src│├──assets:存放静态资源││└──logo.png││──component:存放组件││└──HelloWorld.vue│......
  • 2023-04-14 vue之组件全局注册
    新建一个vue文件,随便写点什么,然后在main.js中引入,如下:xxx.vue:<template><viewclass="container"><viewclass="content">登录窗口</view></view></template><script>exportde......
  • 对比Python中的列表、元组、字典、集合、字符串等之间异同
    1.数据类型列表、元组、字典、集合、字符串均属于python3的标准数据类型。字符串和元组属于不可变数据,即创建后不可修改。列表、字典、集合属于可变数据,即创建后可以修改元素。2.创建有元素的对象3.创建没有元素的对象列表使用eval()或list()或中括号[]进行创建,元素之间使用逗号分......
  • 第五章 重构列表
    5.1重构的记录格式名称(name)。简短概要(summary),简单介绍重构手法的适用场景,以及它所做的事情,帮助更快的找到重构手法。动机,为什么需要这个重构和什么情况下不该使用这个重构做法,简明介绍如何进行次重构范例,已一个十分简单的例子说明次重构手法如何运作5.2寻找引用点借助id......
  • Vue3 Vite H5 手写一个横向展开的多级树列表
    最近写h5要做那种稍微复杂一点的树,没找到现成的UI组件库可用,vant的树只有两级不满足,只能自己写ps.选框的选择/反选/半选对父子选项的影响还有bug,留到脑子好的时候再优化效果代码框架是Vue3+Vite+Vant4。复选框用的vant的checkbox,应该也可以换别的或者原生。模板<templ......
  • vue 使用 vue-seamless-scroll 实现LED屏滚动效果
    yarnaddvue-seamless-scroll<divclass="index-roll"><vue-seamless-scroll:data="partnerList":class-option="optionLeft"><ul><liv-for=&quo......
  • 【Unity/大气渲染】单次散射的原理和简单实现
    这篇随笔将会简单实现一个基于物理的相对真实的大气渲染效果如下图,太空中的星球、相对真实的天空盒如果没有大气,太阳光没有直接照射到的地方将会是一片黑暗而我们能从太空中看到星球表面泛起的蓝光,日出时的美丽景色,都得于太阳光在大气中的散射地球的大气中充斥着诸如空气分子,......
  • vue3微信公众号商城项目实战系列(3)项目初始文件及文件夹简介
    首先我们来看下项目的文件结构图,如下: 各个文件及文件夹作用如下:文件或文件夹名称作用.vscodeVisualStudioCode开发工具的配置信息存放目录,从这个目录可以看出vue3确实是推荐使用vscode作为开发工具的。node_modules项目中用到的包存放目录,当我们用"npminstall......
  • Python学习笔记一:列表
    一.列表1.定义列表,是由一系列按照特定顺序排列的元素组成的一个有序集合。其中可以包含字母,数字,或者其他任何元素,每一个元素之间不一定有关系。不过,在创建列表时,建议还是将相同类型的元素或者相互之间有关联的元素放在一个列表中。鉴于包含的元素的数量,通常在给列表......