010_重学Vue_key的作用与原理

79 阅读1分钟

一、key在Vue中的作用

key 是虚拟 dom 的标识,是 Vue 内部用的属性,不会在真实 dom 中显示。

当数据发生变化时,Vue 会根据数据生成新的虚拟Dom,再拿新、旧虚拟 Dom 进行对比。对比规则如下:

  1. 新、旧虚拟 Dom 找到相同的 key 时:
    • 如果内容没变则直接使用旧节点。
    • 如果内容变了则使用新数据生成Dom节点,并替换之前的真实Dom。
  2. 如果旧虚拟 Dom 中没找到新虚拟 Dom 中的 key 时:
    • 创建新真实 Dom,并渲染到页面。

二、用什么作 key

  1. 用唯一标识作 key,譬如id。 image.png

    旧的真实 Dom 可以直接使用。

  2. 如果不会打乱数据的顺序则可以用 index 作 key。 image.png 从数组头部插入新元素,新、旧虚拟 Dom 中都有 key="0"的节点,文本内容不一样,新文本替换旧文本。输入类型的 Dom 节点内容一样,直接使用旧元素,这时就出错了。

  3. key 如果没写,Vue 默认用 index 作 key。

三、如果使用 index 作 key,特殊情况下会导致一些问题:

  1. 从数组头部增加、删除数据时,会造成效率问题。
  2. 如果有输入类型的元素,会导致数据错误。

参考:www.bilibili.com/video/BV1Zy…