key是每一个vnode的唯一id,也是diff的一种优化策略,根据key更准确的找到对应的vnode节点
vue就会使用就地复地原则:最小化element的移动,并且最大程度在同适当的地方对同类型的element,做patch或者reuse
如果使用key,根据keys的顺序记录element,曾经拥有key的element如果不再出现的话,会被直接remove或者destoryed
设置key与不设置key的差异
<body>
<div id="app">
<p v-for="item in list" :key="item">{{item}}</p >
</div>
<script src="../../dist/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: { list: ['a','b','c','d','e'] },
mounted() {
setTimeout(() => {
this.list.splice(2,0,'f')
},2000)
}
})
</script>
</body>