问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

react原理三( diff算法)

发布网友 发布时间:2022-10-22 04:54

我来回答

1个回答

热心网友 时间:2024-11-03 16:29

a. 传统js优化后的写法:循环拼接100个,然后一次性触发dom操作。

b. react通过深度优先遍历(DFS),循环创建createElement,createTextNode,搞毛呀这岂不是比上一种方法慢多了,所以才要引出我们的主角diff算法。

:对比当前真实的DOM和虚拟DOM,在对比过程中直接更新真实DOM。
:只对比同一层级的变化实现。

有的框架会选择保存上次渲染的虚拟DOM,然后对比虚拟DOM前后的变化;我们选选择直接对比虚拟DOM和真实DOM,一边对比一边更新;

1)对比文本节点:如果当前的DOM就是文本节点,则直接更新内容,否则就新建一个文本节点,并移除掉原来的DOM("hello p" => "hello ge p")。

2)对比元素节点:新旧节点不同就是,增新删旧(<div> => <p>);只新增;只删除。

3)对比属性节点:旧的属性删掉,新的属性添加(<img src='' id=''/> => <img src='' className=''/>)。

4)对比子节点:旧的属性删掉,新的属性添加(<img src='' id=''/> => <img src='' className=''/>)。

    4.1 为啥对比子节点?子节点是一个数组,它们可能改变了顺序,或者 数量有所变化,我们很难确定要和虚拟DOM对比的是哪一个。
    4.2 给节点设一个key值,重新渲染时对比key值相同的节点。新增dom.appendChild(child);删除removeNode( f );插入dom.insertBefore( child, f )

5)对比组件:

    5.1 如果组件类型没有变化,则重新set props。(<AComponent props={oldProps} /> => <AComponent props={newProps} />)
    5.2 如果组件类型变化,则移除掉原来组件,并渲染新的组件。(<AComponent /> => <BComponent />)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...有点像牙刷加大版 很久没用 毛毛里全是霉点 怎么去除呀。 是什么样的有机溶剂能把牙刷的毛除掉 如何让牙刷上的刷毛没了,我只想留牙刷柄 蛋仔派对2月兑换码有哪些-2月兑换码永久免费领取 ...因此导体串联后总电阻 ___;导体并联后相当于增加导体的... 两个定值电阻串联在一起的总电阻比任何一个分电阻都___,它的实质是相 ... 租房时需要哪些材料 苹果改密码时忘记了密码怎么办 点点卡通人物 求人给我找一个情侣头像,有图 React的diff算法详解 炖鸡肉时,千万不要直接加水炖,多做这一步,鸡肉鲜嫩,没有腥味 垂涎录—辣子鸡丁 今年夏季流行什么样的女士凉鞋 你觉得哪道菜是真正的米饭杀手? 海尔张瑞敏在互联网提出智慧家庭的概念,这样家中的妻子可以有更多的时... 好用的小于30MB的 linux 系统有哪些?最好是简体中文的ISO镜像。有请附... 共享带宽的能通过路由器叠加吗 第五人格班有一个自定义大厅又换了一个自定义大厅怎么更换新的? 第五人格怎么更换大厅 腾讯课堂转跳不了 今年重庆师范大学涉外商贸学院的助学金。确切什么时候发呢?_百度知 ... 重庆师范大学的进! 重庆师范大学涉外商贸学院黑不黑啊?为什么这么早就放假了哦,其它院校... 重庆师范大学数学和计算机学院 09年什么时候放寒假? 武汉的身份证在南京可以办理吗 如何进入老师临时建立的群 微信临时群聊去哪里找 你知道吗 为什么2023款红旗h5没有备胎 商业银行贷款条件是什么 40行代码实现React核心Diff算法 React diff算法 赴台证怎么办理 红精灵表显示1 ...血小板 未知待复诊 白细胞减少和血小板减少属于那种症状?_百度... 陶瓷轴承价格比普通轴承价格贵多少? 河源东埔中学2019录取分数? 哪里卖二手断桥铝设备 全套断桥铝门窗设备多少钱,二手断桥铝门窗 二手断桥铝门窗设备 3月份广元普通话考试什么时候在哪里报名? 按摩瘦腿是非常健康有效的瘦腿方法,瘦腿精油哪个牌子好用呢? 求这张重庆区位优势清晰图片 读“鞍钢和宝钢的区位图”,完成下列问题。 (1)鞍钢的区位优势是... ...地区发展水稻种植业的区位优势是 1.气候——— 2.地势— ...图中反映出鲁尔区工业发展的区位优势是: A.丰富的煤 读图,该区域发展大牧场放牧业的区位优势有 ( ) A.地广人稀,土地租金高... ...该种农业地域类型发展的主要区位优势是( )。 ①雨热同期②生产_百度... 意大利baci巧克力国内多少钱一罐啊 2017款,长安CS75 1.8T豪华版 表显行驶了3万公里,现在值多少钱