当vue用v-for渲染列表的时候,默认地,它采取“就地补丁”策略。如果数据项的顺序改变了,vue将在原地修补每个元素,并且确保它映射到特定的索引的渲染上,而不是移动DOM元素去匹配项目的顺序。这和vue1.x的track-by=”$index”行为类似。
vue要跟踪每个节点的身份,重用和重新排序所有元素,我们必须给它一个提示以便它完成这些工作。我们必须为每个item提供一个唯一的key属性。一个理想的key值应该是每个item的唯一的id。这个特殊的属性大致相当于vue1.x的track-by,但它更像一个属性,因此,我们要用v-bind来绑定使它成为一个动态属性。
<div v-for="item in items" :key="item.id">
</div>
建议尽可能地为v-for提供key。除非遍历的DOM内容很简单,或者你有意依靠默认行为获得性能的提升。
key作为vue中识别节点的通用机制,也有其他的用法,而不仅仅是用来绑定v-for。
官网介绍内容