VUE:key属性的作用

在 Vue.js 中,key属性的主要作用是帮助 Vue 在进行 DOM 更新时,能够更准确地识别哪些节点可以复用。

当key值发生变化时,Vue 会执行以下步骤:

1.查找旧节点:Vue 会查找虚拟 DOM 中具有旧key值的节点。

2.匹配新节点:Vue 会尝试在新的虚拟 DOM 树中查找具有相同key值的新节点。

3.更新或复用节点:如果找到了具有相同key值的新节点,Vue 会尝试复用(即"就地更新")旧节点。这意味着 Vue 会尽量重用现有的 DOM 元素,而不是销毁并重新创建它。这可以通过更新节点的属性、事件监听器等来实现,而不必经历完整的 DOM 操作,从而提高性能。如果没有找到具有相同key值的新节点,Vue 会销毁旧节点,并创建新节点。

4.插入或移动节点:如果新节点的位置与旧节点的位置不同,Vue 会执行 DOM 移动操作,而不是重新创建和插入新节点。这也有助于提高性能。

示例1:

html 复制代码
<template>
  <div class="page">
    <div >
      <span v-for="(item, index) in arr" :key="index">{{ item }}</span>
    </div>
    <button @click="changeArr()"></button>
  </div>
</template>
<script setup lang="ts">
import { ref } from "vue";
const arr = ref([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
const changeArr = () => {
  arr.value.pop();
};
</script>

当点击按钮时,前面9个key值相同的节点将会复用而不是删除。

相关推荐
OpsEye14 分钟前
企业大模型压测,需要重点关注哪些指标?
javascript·ai编程
LuHang1 小时前
从天地图切换到高德地图:一次真实的底图迁移实战
前端·vue.js·cesium
用户360055579001 小时前
Kestrel_VLLM - 27 · 寄存器常驻与融合发射:两次「少发一次」
前端
前端小万1 小时前
用"道法术器"重构你和 AI 的协作方式
前端·人工智能·程序员
鶴哥只手遮天1 小时前
Angular 22 源码级深度解析-第 06 章 模板指令全解:`ɵɵelementStart`、`ɵɵproperty`、`ɵɵadvance` 与绑定指令
前端·开源·angular.js
像我这样帅的人丶你还1 小时前
我html生成的doc文档为何在手机文档显示不了图片?
前端·javascript
前端双越老师3 小时前
程序员 1v1 访谈系列第十期:纯前端坚持不了多久了
前端·ai编程·全栈
ruanno_top4 小时前
Vue 3 后台权限路由:我漏掉了按钮级裁剪,还把 403 写成了 404
vue.js
门思科技4 小时前
LoRaWAN 网络排障的五层漏斗:从"上不到云"到"数值不对",每一层该用什么工具证明
前端
计算机魔术师4 小时前
Cursor 官方插件商城现恶意 Claude Code 扩展,约 11 小时影响最多 5000 名开发者
前端