详细概括 React 新版本(16)初始渲染流程

本文详细阐述了React新版本(16)的初始渲染流程,从jsx转换成React元素,经过协调层的Fiber数据结构构建与DOM操作标记,到提交阶段的DOM更新。jsx通过babel转译,生成ReactElement,在render阶段创建Fiber对象并标记DOM操作,最后在commit阶段执行实际的DOM更新。

核心过程:JSX -> babel -> createElement -> ReactElement -> render -> workInProgress Fiber -> commit -> getSnapShotBeforeUpdate -> dom ->lifeCircle/hook

逻辑细节:

1. jsx 转换成 react 元素

  • babel-react 会将jsx 调用 React.createElement
  • React.createElement 会 jsx 转换成 react element (react element 就是 一个用来描述react 元素的对象。)

2. render (协调层)此阶段负责创建 Fiber 数据结构并为 Fiber 节点打标记,标记当前 Fiber 节点要进行的 DOM 操作。

       首先为每一个react 元素构建 fiber 对象 (workInProgress Fiber 树)创建 此 fiber 对象对应的 DOM 对象,为 fiber 对象添加 effectTag 属性(用来记录当前 Fiber 要执行的 DOM 操作),然后在render 结束后, fiber 会被保存到 fiberroot 中。

代码层步骤:

  • 将子树渲染到容器中 (初始化 Fiber 数据结构: 创建 fiberRoot 及 rootFiber)
  • 判断是否为服务器端渲染 如果不是服务器端渲染,清空 container 容器中的节点
  • 通过实例化 ReactDOMBlockingRoot 类创建 L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值