首页 > 其他分享 >v-for 一定要绑定key值吗?为什么不建议使用index?

v-for 一定要绑定key值吗?为什么不建议使用index?

时间:2024-04-18 16:22:59浏览次数:17  
标签:index 渲染 绑定 算法 key diff 数据

在vue进行循环的数组或者对象中,使用了v-for进行dom元素的渲染。

当数组或对象中的值发生变化时,可能会使dom元素重新渲染。是否会重新渲染和我们设置的key属性对应的值有关

合理的设置key属性的值可以有效的提高页面的的更新效率

首先,vue使用了diff算法来进行dom元素的更新,

diff算法:

diff算法可以看作是一种对比算法,对比的对象是新旧虚拟Dom。顾名思义,diff算法可以找到新旧虚拟Dom之间的差异,但diff算法中其实并不是只有对比虚拟Dom,还有根据对比后的结果更新真实Dom。 差异算法可以看作是一种对比算法,对比的对象是新旧虚拟DOM.顾名思义,Dff算法可以找到新旧虚拟DOM之间的差异,但diff算法中其实并不是只有对比虚拟DOM,还有根据对比后的结果更新真实DOM。

简单来说就是:v-for循环的列表数据或对象数据修改的时候,diff算法会根据key值去判断某个值是否修改,如果修改,则重新渲染这一项,否则复用之前的元素;

而当我们使用了index作为key值时,我们向循环的数据插入新的数据时,索引可能发生改变,(在首,中插入数据),那么就会导致vue重新渲染下标发生了变化的数据

而我们如果使用列表数据中的某个唯一值的字段作为key值,那么我们向循环的数据插入新的数据时,只会重新渲染新加的数据。

参考:v-for 一定要绑定key值吗?为什么不建议使用index?_现在的v-for能不写key吗-CSDN博客

为什么不推荐用index当做v-for中的key值呢? - 知乎 (zhihu.com)

 

总结:我们只做数据的渲染就可以使用index作为key值,并没有什么问题,但是涉及到数据的操作,比如添加或删除数据的时候就不要用了

标签:index,渲染,绑定,算法,key,diff,数据
From: https://www.cnblogs.com/123-hh/p/18143743

相关文章

  • 网卡绑定(bond)之子接口
    服务器两张网卡需要做bond,并且bond后网卡需配置不同网段的地址,用于走不同流量,这个时候就可以采用起子接口的方式。#第一步:停掉NetworkManager服务systemctlstopNetworkManager.servicesystemctldisableNetworkManager.service#第二步:备份cp/etc/sysconfig/networ......
  • UI——数据表和UI绑定
    目的创建数据表创建UI控件玩家角色蓝图UI按键逻辑UI与数据表绑定1.创建数据表2.创建UI控件3.玩家角色蓝图UI按键逻辑4.UI与数据表绑定......
  • keycloak~jwt的rs256签名的验证方式
    接口地址keycloak开放接口地址:/auth/realms/fabao/.well-known/openid-configurationrsa算法相关术语RSA算法是一种非对称加密算法,其安全性基于大整数分解的困难性。在RSA算法中,有以下几个关键参数:n(模数):n是一个大整数,通常为两个大素数p和q的乘积,即n=p*q。n用......
  • SQL题目:在数据中找出所有val全为1的key
    这道题目我觉得很经典,所以记录下来。表的结果如下:一个实体对应10行数据,所以上面的表省略了一部分以方便显示。A、B、C的元素和正文中是一样的。key为A的行val全都是NULL,key为B的行中只有i=1的行val是3,其他的都是NULL,key为C的行val全部都是1。请思考一下如何从这张表中选......
  • Failing package is: mysql-community-server-5.7.44-1.el7.x86_64 GPG Keys are con
    Failingpackageis:mysql-community-server-5.7.44-1.el7.x86_64GPGKeysareconfiguredas:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql  执行 wget--quiet--output-document-https://repo.mysql.com/RPM-GPG-KEY-mysql-2022|gpg--no-default-keyring--keyr......
  • TypeScript 中 Type 'typeof globalThis' has no index signature 错误解决
    TypeScript中Type'typeofglobalThis'hasnoindexsignature错误解决当我们尝试访问 global 对象上不存在的属性时,会出现错误“Elementimplicitlyhasan'any'typebecausetype'typeofglobalThis'hasnoindexsignature”。要解决此错误,需要扩展全局对象并为必......
  • 批量扫描并上报所有服务器已信任的authorized_keys
    https://www.cnblogs.com/iAmSoScArEd/p/18140656-我超怕的codefromflaskimportFlask,requestimportcsvapp=Flask(__name__)@app.route('/',methods=['POST'])defreceive_data():data=request.data.decode('utf-8')......
  • 肖sir__app之monkey测试
    momkey_使用:一、adb命令:1、dos下链接:adbconnect127.0.0.1:62001 2、adbdevices原文:Listofdevicesattached(附设)意思:所附设备清单 device:已识别的设备表示连接成功unauthorized:没有授权需要手机授权才能连接unkown:未识别的设备offline:离线设备 3、adbvers......
  • 基于jackson的json key压缩工具类
    packagecom.zipkey;importcom.fasterxml.jackson.annotation.JsonInclude;importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.jackson.databind.MapperFeature;importcom.fasterxml.......
  • 免费版ChatGPT API Key生成
    ChatGPT现在虽然都免费了,但是不岢雪(那俩字竟然是敏感字)上网还是很麻烦,网上有很多gpt网站可以用,但是自己用来开发的话,还是需要一个apikey的项目地址https://github.com/chatanywhere/GPT_API_free可以直接去官网看如何申请申请地址https://api.chatanywhere.org/v1/oauth/fr......