为什么不能用 默认的index 作为 key?
如果你用 index 作为 key,那么在做特殊操作新增或者删除某项的时候,内部默认的index 永远都是连续的,可能会出现bug, 所以有时候不写key、或者写了默认的key效果是一样的。
再通俗点:
这也是vue不推荐使用数组下标作为key的原因。例如数组删除了一个元素,那么这个元素后方元素的下标全都前移了一位,之前key对应的数据和dom就会乱了,除非重新匹配key,那就容易产生错误。如果重新匹配key,等于全部重新渲染一遍,违背了使用key来优化更新dom的初衷。
没有 id 怎么办?
创建一个 id() 函数,每次调用自增一
或者使用 guid 库或者 uuid() 库
Lodash库的uniqueId()方法
为什么 Vue 自己不自动创建 id?
因为就算 Vue 创建了 id,也同样面临更新时把 id 给谁的问题,id 会再一次地给到错误的地方。
key的作用?
vue的一个优化,为了精准高效的更新dom,
相当于使用key给数组某个元素绑定在一起,如果那个key对应的数据发生变化,直接更新对应的dom就行,不用全部更新一遍。
跟: 为什么不能用 默认的index 作为 key 其实也是差不多的