1.在列表循环中,react/vue都要求加入一个key值来提升性能。key值为是否重新渲染列表项的唯一标识。如果更新前后key值相同,那么就采用就地复用策略,而不是重新去渲染,大大提高了性能。
2.不添加key,diff算法进行的只是浅层比较,例如在新旧DOM对比时,两处引用的是一样的组件component,但它比较到父节点span与div不同就停止比较了,重新渲染span和div下的所有子节点,这样重复渲染太多,效率极低。
1. <span>
<component/>
</span>
2. <div>
<component/>
</div>
3.使用index不能提升性能。采用index为key值,如果新添加的列表项位于列表前面或者中间,那么会导致旧的列表项的index发生变化,也就是key值发生变化,而key值是diff算法辨别是否采用就地复用策略的唯一标识,key值是不能改变的,key值改变导致不能识别更新前后是否相同,会重新渲染列表项,key值提升性能则不复存在。