vue与react 中key的内部原理是什么

88 阅读1分钟
  1. 虚拟DOM中key的作用 key是虚拟DOM对象的标识,在更新显示时 key 起着重要的作用。

  2. 当状态中的数据发生变化时,vue,与react 会根据【新数据】生成【新的虚拟DOM】随后 vue 与react会进行【新的虚拟DOM】与【旧的虚拟DOM】进行对比,比较规则如下:

  • 旧虚拟DOM 中找到与新虚拟DOM中相同的 key

    • 如果内容没有变化,直接使用页面上的真实DOM。
    • 如果内容改变了,就根据虚拟DOM生成新的真实DOM替换掉页面上的真实DOM。
  • 旧虚拟DOM 中没有找到与新虚拟DOM中相同的 key

    就根据虚拟DOM生成真实DOM放到页面上。

  1. 用index作为key值的可能引发的问题
    • 对数据进行逆序添加,逆序删除等破坏顺序的操作,会产生没有必要的真实DOM的更新,界面效果没有问题,但是效率会比较低。 下面是对比分析图
    • 如果结构中还包含输入类型的DOM,会产生错误的DOM更新=》界面会产生问题。 在新旧虚拟DOM对比时,react和vue不会对输入框中的内容进行对比,
    • 如果不存在上面两种情况,仅仅用于展示,用index作为key是没有问题的。