先说一句,没有key值或者key值不唯一会报错。
key的作用是为了在diff算法执行时更快的找到对应的节点,提高diff速度。
不带key时:
因为不带key时节点能够复用,省去了销毁/创建组件的开销,同时只需要修改DOM文本内容而不是移除/添加节点,这就是文档中所说的“刻意依赖默认行为以获取性能上的提升”。
所以不带key可能性能更高。但是就地复用会带来一些副作用:例如复用了组件,会保留了之前的状态,导致出现的效果可能会和我们预期不符。
所以:带key值会使渲染的组件更符合我们的预期,以及在执行diff算法时,更快找到对应的旧节点,提高diff速度。