每个元素都有一个key
属性,如果你指定了它,则它必须在兄弟元素之间唯一。
key
属性用于标识每一个兄弟元素,它能提高更新模板时diff算法的效率
先来看一个问题:如何将数组[1, 2, 3]
变成[1, 3]
?
有两种方法:
- 最直接的方法就是:直接删除第2个元素
- 也可以这样:将第2个元素替换成3,变成
[1, 3, 3]
,然后删除第3个元素
很显然第二种方法比较绕,但不需要key
属性来标识元素,虚拟DOM做diff更新时,就是采用
的该方法。而加入key
则会采用第一种方法来更新,所以key
属性的加入能提高模板更新性能。
在循环渲染列表时v-for
,给每一项指定一个唯一的key
是推荐做法