key是虚拟dom的重要标识,在新旧虚拟dom比较的时候,每一个新的虚拟dom可以通过旧的虚拟dom的key应射表内快速找到是否存在对应的dom来进行比较,减少对真实dom的操作,提高了效率和性能
有key的情况下,在新旧虚拟dom进行比较的时候,如果内容没有发生改变就复用该旧的真实dom,如果内容发生改变或者找不到对应的key,则直接新生成一个新的真实dom
旧的
<ul>
<li id='1'>a</li>
<li id='2'>b</li>
<li id='3'>c</li>
</ul>
新的
<ul>
<li id='1'>b</li>
<li id='2'>c</li>
<li id='3'>a</li>
</ul>
如果用index作为key的话,他就会新增3个真实dom
如果单纯的做数据的渲染就可以使用index作为key,但是如果操作涉及到原来数据顺序的改变或者数据的插入的话,不推荐使用index作为key,这样会增加了对真实dom的操作,并没有做到一个性能和效率的提高