就目前所了解的情况,key的作用有以下这些。
v-for遍历时,用id,uuid之类作为key,唯一标识节点加速虚拟DOM渲染
响应式系统没有监听到的数据,用+new Date()生成的时间戳作为key,手动强制触发重新渲染
场景一大同小异司空见惯,场景二是下面这样的:
Hello Vue.js !
refresh(){
this.rerender = + new Date();
}
那么vue中key的相关知识点到底是怎样的呢?
官方API知识点
上面2个使用场景背后的原理是什么?
除key外,还有其它强制更新DOM的方法吗?
参考资料
官方API知识点
在Vue.js中,key是6个特殊属性key, ref, is, slot, slot-scope, scope其中之一。
key的值可以是number,也可以是string。
key主要作用于Vue的virtual DOM算法,在diff new nodes list和old nodes list时,作为识别VNode的一个线索。
如果不用key,Vue会用一种算法:最小化element的移动,并且会尝试尽最大程度在同适当的地方对相同类型的element,做patch或者reuse。
如果使用了key,Vue会根据keys的顺序记录element,曾经拥有了key的element如果不再出现的话,会被直接remove或者destory