为什么需要这个key属性呢?
这个其实和Vue的虚拟DOM的Diff算法有关系
当某一层有很多相同的节点时,也就是列表节点时,我们希望插入一个新的节点
我们希望可以在B 和 C之间加一个F,Diff算法默认执行起来是这样的:
即把C更新成F,D更新成C,E更新成D,最后再插入E,这样是不是很没有效率?
所以我们需要使用key来给每一个节点做一个唯一标识
- Diff算法就可以正确的识别此节点
- 找到正确的位置区插入新的节点
所以:key的作用主要是为了高效的更新虚拟DOM
代码举例:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<ul>
<li v-for="item in letters" :key="item">{{item}}</li> //key绑定的元素必须具有唯一性(所以不能用index绑定,用item具有唯一性)
</ul>
</div>
<script src="js/vue.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
letters:["A","B","C","D","E"]
}
})
</script>
</body>
</html>
在B、C之间插入F:
app.letters.splice(2,0,'F')