vue/react中key的作用

592 阅读1分钟

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值提升性能则不复存在。