在 Vue 中,v-for 指令用于遍历数组或对象,而 key 在 v-for 中起到了 唯一标识 的作用,帮助 Vue 高效地更新 DOM。
当 Vue 更新 DOM 时,默认采用 "就地复用" 策略,而 key 主要用于 优化虚拟 DOM 的 Diff 算法,保证组件能够正确复用和更新。
- 没有
key:Vue 可能会 错误复用 组件,导致数据错乱。 - 有
key:Vue 可以 正确追踪每个元素,提高性能,减少不必要的 DOM 操作。
Vue 使用 Diff 算法 比较新旧虚拟 DOM,并决定如何高效更新。
有 key 时
Vue 通过 key 识别元素是否相同:
- 如果
key相同,则直接复用该 DOM 节点。 - 如果
key发生变化,则 Vue 删除旧节点,创建新节点。
没有 key 时
Vue 默认采用 就地更新,可能导致错误复用:
- 索引
index作为key:如果数组是 排序 或 动态变更 的,可能会导致不正确的 DOM 更新。 - 随机
key:如果每次渲染时key变了(如Math.random()),Vue 会把所有元素视为不同的,导致 每次都重新创建 DOM,失去复用优势。