当前位置: 首页 > news >正文

【React Fiber的重要属性】

Fiber

  • 前言
  • 核心属性
  • Fiber链表的指向关系
  • Fiber链表是如何进行遍历的

前言

可以结合我的另外两篇文章来参考
React渲染流程原理揭秘
React的Fiber及中断-重启逻辑的设计

核心属性

创建Fiber的构造函数
在这里插入图片描述

属性作用何时赋值
tagFiber类型(例子:0 函数组件 1 类组件),决定当前Fiber渲染逻辑的调用创建Fiber的时候会根据type等信息赋予对应的值
mode渲染类型, 0 同步阻塞渲染 1 中断-重启渲染继承parent Fiber的mode值,根FiberNode的mode来自于固定传入
lanes可以理解为还未处理的更新任务,只有这个值存在才会触发当前组件的重新执行,渲染新的内容调用(const [ state, setState ] = useState())setState回调函数之后会产生并通过位运算符与加到该属性上
childchild的FiberNode(一个或者多个,多个的时候会通过sibling串成一个child链表),但注意child永远只会保存第一个child的FiberNode在父Fiber渲染之后会调用reconcileChildren生成child的FiberNode,并顺势挂载到当前child的属性上
return父FiberNode调用reconcileChildren生成child的FiberNode的时候顺势将parent的FiberNode挂载到return属性上
sibling下一个兄弟FiberNode当存在多个child的时候,在循环遍历生成child的FiberNode的时候,顺势将下一个FiberNode赋值到sibling属性上
alternate保存组件上一个态的快照,位后续渲染时比较新旧Fiber是否变化提供依据更新周期中为当前Fiber创建child Fiber的时候会为child Fiber绑定alternate属性的值
memoizedState记录当前组件的hook链(hook是React记录useState等钩子产生的对象,与Fiber一样也是链式的结构,通过next属性绑定关联关系)执行组件函数遇到useState()会产生一个hook对象,并顺势将第一个hook赋值给memoizedState属性

Fiber链表的指向关系

主要是通过child,return,sibling这几个属性明确Fiber的指向关系
在这里插入图片描述

Fiber链表是如何进行遍历的

结合上面的图和child属性说结论,React在遍历链表Render的过程中是先深后横再回溯(child,sibling,return)。
循环的过程中,优先返回FiberNode.child作为下一次循环的值,而FiberNode.child永远只保存第一个子元素的FiberNode。所以是按照深度进行遍历,到根节点后再借助sibling遍历兄弟FiberNode,最后再借助return返回上一层节点继续遍历兄弟FiberNode。最后回到根节点然后退出循环渲染的逻辑。

http://www.dtcms.com/a/549804.html

相关文章:

  • React 模块化Axios封装请求 统一响应格式 请求统一处理
  • React 页面路由ReactRouter 路由跳转 参数传递 路由配置 嵌套路由
  • C++ 分治 归并排序解决问题 力扣 LCR 170. 交易逆序对的总数 题解 每日一题
  • 贵州省住房与城乡建设部网站国内论坛网站有哪些
  • React 状态管理库相关收录
  • 深圳手机网站设计公司wordpress外链404
  • C/C++中的二级指针使用
  • 用dw做红米网站网站管理助手v3
  • 网站建设电话话术有趣软文广告经典案例
  • Fetch API 返回值获取方法
  • 机器学习-导师优选
  • 做视频网站要准备哪些资料阿里虚拟机建设网站
  • 使用局域网做网站百度手机助手网页
  • VMware-三种网络模式
  • 【weblogic】文件上传漏洞
  • 用 Rust 写一个前端项目辅助工具:JSON 格式化器
  • OrionX GPU池化社区版永久免费,算力管理焕新升级!
  • Rust 控制流深度解析:安全保证与迭代器哲学
  • 异常处理机制
  • 一元云淘网站开发android开发最全教程
  • 第 18 天:Web 服务器(Apache、Nginx、反向代理)
  • 郑州网站运营实力乐云seo如何从下载的视频查到原网站
  • nodejs有几种模块模式
  • 非法网站怎么推广海口专业的网站开发
  • 网站建设实训心得与建议安徽省工程建设信息网职称查询
  • 【高阶数据结构】AVL树
  • 三明 网站建设如何建立自己的
  • 可以做兼职的动漫网站公司网站想维护服务器
  • Go语言设计模式:桥接模式详解
  • 前端(Vue3)如何接收后端(SpringBoot)返回的文件并下载