组件编程-遍历列表的key
经典面试题
react/vue
中的key
有什么作用?key
的内部原理是什么?- 为什么遍历列表时,
key
最好不要用index
?
虚拟DOM中key的作用
key就是虚拟DOM对象标识, 渲染前, 用于虚拟DOM diff 时的对比
虚拟DOM中key的原理
当状态中的数据发生变化时, react
会根据 ==新数据
生成 新的虚拟DOM
==, 随后 React
进行==新虚拟DOM
与 旧虚拟DOM
== diff比较, 规则如下
- 旧虚拟DOM中找到与新虚拟DOM相同的
key
- 若虚拟DOM中的内容==没变==, ==使用之前==的真实DOM
- 若虚拟DOM中的内容==变了==, ==替换页面==的真实DOM
- 旧虚拟DOM没有找到与新虚拟DOM相同的
key
- 根据数据创建的新虚拟DOM, 渲染到页面
当key使用index会造成的问题
分不同场景使用
严重的效率问题
- 若对数据进行:
逆序添加
,逆序删除
…等破快顺序的操作- 会导致旧的真实DOM, 没必要的更新, ==造成效率低==