其他分享
首页 > 其他分享> > react-fiber 解析

react-fiber 解析

作者:互联网

react 运行时存在 3 种实例。  
  1. DOM 真实 DOM 节点
  2. Instance React 维护的 vDOM
  3. Element 描述 UI 长什么样子 (type,props)
  在首次渲染过程中构建出 vDOM tree,后续需要更新时 (setState()),diff vDOM tree 得到 DOM change,并把 DOM change 应用(patch)到 DOM 树。   Fiber 之前的 reconciler (被称为 Stack reconciler)自顶向下地递归 mount/update,无法中断(持续占用主线程)。   Fiber 解决这个问题的思路是把渲染/更新过程(递归 diff )拆分成一系列小任务,每次检查树上的一小部分,做完看是否还有时间继续下一个任务,有的话继续,没有则把自己挂起,主线程不忙的时候再继续。   增量更新需要更多的上下文信息,因此扩展出了 fiber tree (即 Fiber 上下文的 vDOM tree ),更新过程就是根据输入数据以及现有的 fiber tree 构造出新的 fiber tree (workInProgress tree)。   Instance 层新增了    fiber tree 上各节点的主要结构(每个节点称为 fiber )如下: {     stateNode,     child,     return,     sibling,     ... }   reconcile 过程分为 2 个阶段(phase):

 

commit:   生命周期 hook 第 1 阶段 render / reconciliation   第 2 阶段 commit   第 1 阶段的生命周期函数可能会被多次调用。   Fiber 是一种 LinkedList 的结构。Stack 是 tree 的结构,沿着树状层级结构向下处理。Fiber 则是依照 return、child 及 sibling 的顺序来针对该 ReactElement 做处理。   Fiber 的排程 Fiber 共有 beginWork、completeWork 及 commitWork 三种阶段。beginWork 会执行 component 实例化,调用 component 的 render() 方法,以及进行 shouldComponentUpdate() 结果比较。    github 关于 fiber 的 demo:https://github.com/Vxee/react-async-mode 参考链接:http://www.ayqy.net/blog/dive-into-react-fiber/

标签:fiber,DOM,tree,react,Fiber,解析,workInProgress,vDOM
来源: https://www.cnblogs.com/fjl-vxee/p/11069940.html