vue for循环 key的作用

133 阅读1分钟

在 Vue 中,v-for 指令用于遍历数组或对象,而 keyv-for 中起到了 唯一标识 的作用,帮助 Vue 高效地更新 DOM

当 Vue 更新 DOM 时,默认采用 "就地复用" 策略,而 key 主要用于 优化虚拟 DOM 的 Diff 算法,保证组件能够正确复用和更新。

  • 没有 key:Vue 可能会 错误复用 组件,导致数据错乱。
  • key:Vue 可以 正确追踪每个元素,提高性能,减少不必要的 DOM 操作。

Vue 使用 Diff 算法 比较新旧虚拟 DOM,并决定如何高效更新。

key

Vue 通过 key 识别元素是否相同:

  1. 如果 key 相同,则直接复用该 DOM 节点。
  2. 如果 key 发生变化,则 Vue 删除旧节点,创建新节点

没有 key

Vue 默认采用 就地更新,可能导致错误复用:

  • 索引 index 作为 key:如果数组是 排序动态变更 的,可能会导致不正确的 DOM 更新。
  • 随机 key:如果每次渲染时 key 变了(如 Math.random()),Vue 会把所有元素视为不同的,导致 每次都重新创建 DOM,失去复用优势。