vue的for循环不建议用index作为key

我们页面总有一些相似的,我们想用循环渲染,根据对象数组结构进行渲染,这是不是很熟悉的场景。这时候我们需要有一个唯一的key绑定在循环渲染的元素上,一般情况下我们会用id,因为id是唯一的。然而有些页面要循环的数据(比如描述性的对象数组)没有id的时候,有的人会用index 下标作为key,实际上这个是不建议 的。比较推荐的做法是找出一个唯一标识(比如下标+内容/name拼接组合)

一、为什么不建议用Index

1、绑定元素会变: 当数组数据发生变化时,那么Vue无法准确地追踪每个子组件的身份。因为当一个数组比如前面加了元素item0,那么下标为 0的元素,它的内容是变化的,而不再是原来的item1了,下标绑定元素会变化的,并不是固定的。

2、性能问题: 当新的数据项插入到数组的开头或中间时,所有后续的子组件 会被重新渲染,即使它们实际上并没有发生变化。这样会导致性能问题,因为Vue要重新创建和销毁大量的子组件。

3、 重新渲染:数组中的项发生顺序变化,index作为key的子组件也会随之变化,这可能导致不必要的重新渲染。

二、如何设置唯一标识

**1、id:**数组元素有唯一标识(如id等),那么使用其唯一标识

2、使用index+name: 唯一性需要保证,以免出现重复的情况。另外,如果需要进行查找或者排序操作,可能需要考虑使用更合适的数据结构,以提高性能。

**3、添加唯一标识 :**可以考虑通过计算属性或者修改数据源来为每一项添加一个唯一标识

相关推荐
人工智能训练5 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪5 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
xiaoqi9226 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233227 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88218 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas1368 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠8 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
2601_949833398 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
珑墨9 小时前
【Turbo】使用介绍
前端
军军君019 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three