千家信息网

React Fiber的概念是什么

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍了React Fiber的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇React Fiber的概念是什么文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2025年01月20日React Fiber的概念是什么

这篇文章主要介绍了React Fiber的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇React Fiber的概念是什么文章都会有所收获,下面我们一起来看看吧。

React Fiber是一个类似双向链表的数据结构;ReactDom会根据jsx,为每个dom节点生成一个fiber节点,child指向第一个子节点、sibling指向下一个兄弟节点、return指向父节点的数据结构就是fiber数据结构。

本教程操作环境:Windows10系统、react17.0.1版、Dell G3电脑。

什么是React Fiber

fiber是个什么东西?因为English是国外程序员的母语,所以他们对代码中的命名都是有考究。fiber意思是纤程,大家都知道进程、线程,纤程是较线程更细的东西。因为JS是单线程的,所以从这个角度分析,fiber的命名是很有考究的。

以上是fiber概念,在代码中fiber是什么呢?其实fiber就是一个类似双向链表的数据结构。如下图:

reactDom会根据jsx,为每个dom节点生成一个fiber节点,(注意:当textNode是唯一的子节点时,不会单独生成fiber节点),child指向第一个子节点,sibling指向下一个兄弟节点,return指向父节点。这样的数据结构就是fiber数据结构,当然fiber中还有存储了其他数据。

fiber工作原理

  已经了解了fiber的数据结构,那么fiber是如何在react异步可中断的更新中发挥作用的呢?

  首先我们先看下原来react虚拟dom(v16之前版本)为什么支持不了可中断的更新,首先我们假设虚拟都没可以中断(实际不可中断),比如以下代码

// 更新前 
  • 1
  • 2
  • 3
// 更新一
  • 2
  • 3
  • 4

  我们把123更新为234(更新一),在更新过程中,当1->2, 2->3完成时被中断了,3没有变成4,那么结果就是233,这就产生了bug。

  react v16解决的方式是双缓存技术,即在更新时,react存储两个fiber数据结构,如下图:

  上图中,rootFiber是react应用,footFiberNode是应用挂在的节点,current指向的fiber是渲染在页面中的fiber(即出现在屏幕中的视图),我们称它未current fiber,current fiber的每一个fiber节点都有一个alternode指向另一个棵树的相同fiber节点,我们称这个fiber为workInProgress fiber。

  我们知道,当react v16前的版本更新时,会进行jsx和虚拟dom树进行diff算法,计算结果就是最终需要更新的视图。而在react v16 diff算法是将jsx和workInProgress fiber进行计算,最终得出最终视图,然后将current指针指向workInProgress fiber,渲染新的视图。跟workInProgress fiber进行diff算法是在内存中进行的,即使被中断也对现有视图不产生影响。

关于"React Fiber的概念是什么"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"React Fiber的概念是什么"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

节点 更新 指向 数据 数据结构 结构 概念 就是 视图 代码 知识 算法 线程 生成 东西 个子 兄弟 内容 双向 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 teradata数据库运行系统 数据库创建视图出错 java我的世界服务器无法登录 国际关系学院网络安全研招 公安大学网络安全专业就业 异构网络安全体系发展现状 地下城与勇士登录不显示服务器 从服务器拆下来内存条 与软件开发方面的专业有哪些 下面哪些是流行的数据库技术 不属于服务器操作系统的有哪些 简述软件开发中的瀑布模型 将数据库中查出的数据求和 厦门诚毅技术学校网络技术 实验四数据库视图和安全性 武汉时间同步服务器 想学网络安全有哪些书籍 计算机网络技术的数学难吗 三星无法连接到服务器 人人乐网络技术有限公司 天龙八部私服哪里买服务器 软件开发入门自学指南 软件开发Debug仪器 华为网络安全科技有限公司 网络安全试题2017 镇远手机软件开发 小米游戏怎么查看以前服务器 ra服务器是什么 湖北品质软件开发设施价钱 软件开发卷宗是什么
0