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值相同的节点将会复用而不是删除。

相关推荐
禁止摆烂_才浅33 分钟前
JavaScript 类型判断:instanceof 与 constructor 原理深度解析
前端·javascript·面试
gezg42 分钟前
DeepSeek Harness 插件:Excel 拖进输入框,AI 自己去读文件
前端·ai编程
Asize1 小时前
HTTP 明明无状态,登录态怎么就保住了——React + Zustand + JWT 鉴权全流程拆解
前端·javascript
两只羊ovo1 小时前
MCP:AI 界的 USB-C,把模型和世界「插」起来
前端
Darling噜啦啦1 小时前
JWT 登录鉴权全链路:从 Zustand 状态管理到 Axios 拦截器,彻底搞懂前端鉴权工程
前端
可涵不会debug1 小时前
LangChain 示例选择器(Example selectors)完整基础概念解读
服务器·前端·数据库
Csvn1 小时前
😱 React `<StrictMode>`:为什么 useEffect 被调用了两次?别慌,这是特性不是 bug
前端
Asize1 小时前
2 道大厂面试题:TS 工具类型我懂了,CSS 3 列布局把我问住了
前端·css·typescript
胡萝卜术1 小时前
从"氛围编程"到规范驱动:两次创造如何让 AI 协作从碰运气变成工程流水线
前端·面试·github
Imchendiana1 小时前
《狂人日记NO.11》— 给 AI 装一本"项目说明书":我把"自己"蒸馏成了一个编码知识库Skill
前端·ai编程