当前位置: 首页 > Web前端 > JavaScript

React源码-diff算法揭秘

时间:2023-03-27 13:37:58 JavaScript

React中的diff算法分为两种单节点diff多节点diffdiff算法的优化只比较同级节点。会尝试复用,会直接新建一个Fiber节点--------oldFiber节点--------

Title测试

------newFiber节点----
标题测试//跨域级别,不会尝试复用,直接新建fiber节点
针对前后不同类型的html标签,比如div标签变成p标签,React会删除之前nodes,通过为元素设置一个键值来构建一个新的Fiber节点,以标识哪些元素可以最大程度地被重用;当当前和后续Fiber节点的type和props属性(key值和其他prop属性除外)保持不变时,Fiber节点的位置将交换---oldFiber---
Titledsflksj

-----newFiber---
/***开关位置,Fiber节点的类型并且props属性中的key没有改变;*如果key值没变,其他prop属性变了,会新建一个Fiber*/dsflksj

Title
触发diff算法的条件是当被比较的两个元素key不同,Html标签类型不同,标签属性不同时触发