开发者社区> 问答> 正文

Vue中的key到底有什么作用?

展开
收起
前端问答 2019-11-24 13:31:45 979 0
1 条回答
写回答
取消 提交回答
  • 前端问答小助手

    key是为Vue中的vnode标记的唯⼀id,通过这个key,我们的diff操作可以更准确、更快速。

    diff算法的过程中,先会进行新旧节点的首尾交叉对比,当无法匹配的时候会用新节点的key与旧节点进行比对,然后找出差异。

    diff过程可以概括为oldChnewCh各有两个头尾的变量StartIdxEndIdx,它们的2个变量相互比较,⼀共有4种比较方式。如果4种比较都没匹配,如果设置了key,就会用key进行比较,在比较的过程中,变量会往中间靠,⼀旦StartIdx>EndIdx表明oldChnewCh至少有⼀个已经遍历完了,就会结束比较,这四种比较方式就是首、尾、旧尾新头、旧头新尾。


    准确: 如果不加key,那么vue会选择复用节点(Vue的就地更新策略),导致之前节点的状态被保留下来,会产生⼀系列的bug

    快速:key的唯⼀性可以被Map数据结构充分利用,相比于遍历查找的时间复杂度O(n),Map的时间复杂度仅仅为O(1)

    2019-11-24 15:55:50
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
Vue.js在前端服务化上的实践与探索 立即下载
利用编译将 Vue 组件转成 React 组件 立即下载