2025年diff算法中的概念

diff算法中的概念合并多次 setState setState 被设计为一个异步的方法 目的是为了提升 React 底层的性能 假设我们短时间内连续变更 3 次 state React 就会把这 3 次 setState 合并为一次 setState 只做一次 VDOM 的比对 提高了整体的性能 同级比较 diff 算法会从根节点开始

大家好,我是讯享网,很高兴认识大家。

合并多次setState

setState被设计为一个异步的方法,目的是为了提升React底层的性能。假设我们短时间内连续变更3次state,React就会把这3次setState合并为一次setState,只做一次VDOM的比对,提高了整体的性能。


讯享网

同级比较

diff算法会从根节点开始,一层层的向下比较,如果在某一层的某个节点发现不同了,他就会直接替换这个节点下面的所有子树。

key值的重要性

如果每一个虚拟DOM节点没有一个key值,他就没有自己的一个名字。当我们在做新旧虚拟dom的比对时,旧状态的虚拟节点就与难以与新状态的虚拟节点之间确立关系。当每一个虚拟节点都有唯一key值时,新旧状态的虚拟节点很快就能知道谁是谁,这样就极大的提升了diff算法的效率。

为什么不要将数组的下标作为key值

假如数组中又3个节点a,b,c。我们使用数组下标来作为dom的key值。

[a, b, c] // 0:a, 1:b, 2:c

这时删除b

[a, c] // 0:a, 1:c

原来key值为1对应节点为b, 但现在key=1对应的节点变成了c。这时这个key值就失去了它存在的意义了。 所以,为key值绑定一个稳定的值才是正确的做法

 

小讯
上一篇 2025-01-08 23:05
下一篇 2025-03-23 07:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/70824.html