资讯专栏INFORMATION COLUMN

React源码解析(一)

zzbo / 1435人阅读

摘要:是整个应用的起点,包含应用挂载的目标节点,记录整个应用更新过程的各种信息是一个对象是当前应用对应的对象,即。每个节点会对应一个对象,记录节点的各种状态,比如,,这些状态更新完成后会被更新,是所对应节点的实际的实例,比如对应一个就是一个。

ReactDom.render做了什么

首先react代码分为react和react-dom两个包,react中代码量特别的少,基本就是API的定义,调用react-dom中的实现。调用的第一个API就是:

  ReactDom.render(App,
)

这个方法做的事情其实很简单,就是创建了根节点,并做了应用更新前的一系列准备工作,流程是这样的:创建reactRoot—————>创建FiberRoot————>创建RootFiber,Update———>把update加到更新队列Fiber.updateQueue中;
虽然这个过程很简单,但是创建的每一个对象都很重要。
1.reactRoot: 其实没太多实际的意义,被创建以后,创建了FeberRoot对象。
2.FiberRoot: 是整个应用的起点,包含应用挂载的目标节点,记录整个应用更新过程的各种信息FiberRoot.currents是一个Fiber对象,是当前应用对应的Fiber对象,即Root Fiber。

3.Fiber:每个reactElement节点会对应一个Fiber对象,记录节点的各种状态,比如state,props,这些状态更新完成后Fiber.stateNode会被更新,Fiber.stateNode是Fiber所对应节点的实际的实例,比如fiber对应一个classComponent,Fiber.stateNode就是一个Class。Fiber串联整个应用形成树结构。Fiber树是单向链表结构连接起来的。主要靠以下几个字段:

// 指向他在Fiber节点树中的`parent`,用来在处理完这个节点之后向上返回
      return: Fiber | null,
    
      // 单链表树结构
      // 指向自己的第一个子节点
      child: Fiber | null,
      // 指向自己的兄弟结构
      // 兄弟节点的return指向同一个父节点
      sibling: Fiber | null,
  

3:Update对象,用于记录组件状态的改变,由ReactRoot创建,存放于Fiber.updateQueue中。
updateQueue依然为单向列表结构,依靠update.next连接起来。updateQueue会根据所有update计算出新的state。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106180.html

相关文章

  • react解析: render的FiberRoot(三)

    摘要:查看创建核心函数源码行调用函数创建是相关,不用管源码行这个指的是调用创建,下面我们将会说到对象源码行源码行函数中,首先创建了一个,然后又创建了一个,它们两者还是相互引用。 感谢 yck: 剖析 React 源码解析,本篇文章是在读完他的文章的基础上,将他的文章进行拆解和加工,加入我自己的一下理解和例子,便于大家理解。觉得yck写的真的很棒 。React 版本为 16.8.6,关于源码的...

    muddyway 评论0 收藏0
  • React源码解析ReactDOM.render()

    摘要:一更新的方式有三种渲染接下来,我们就来看下源码二作用在提供的里渲染一个元素,并返回对该组件的引用常见的用法是这个官网网址源码服务端使用方法渲染节点是让服务端尽可能复用节点,提高性能元素容器应用渲染结束后,调用的函数错误抓取方法本质是返回 showImg(https://segmentfault.com/img/remote/1460000020064414?w=1240&h=641);...

    iKcamp 评论0 收藏0
  • Luy 1.0 :React-like轮子的诞生

    摘要:司徒正美的一款了不起的化方案,支持到。行代码内实现一个胡子大哈实现的作品其实就是的了源码学习个人文章源码学习个人文章源码学习个人文章源码学习个人文章这几片文章的作者都是司徒正美,全面的解析和官方的对比。 前言 在过去的一个多月中,为了能够更深入的学习,使用React,了解React内部算法,数据结构,我自己,从零开始写了一个玩具框架。 截止今日,终于可以发布第一个版本,因为就在昨天,我...

    codecook 评论0 收藏0
  • 基于React版本16.4的源码解析

    摘要:本次分析的源码采用的是的版本核心接口提供了处理的工具集我们先来看看做了什么事情即当为空时,返回不为时调用,最终返回一个数组这里说一下,可以通过传入的对所有子组件进行操作,具体使用方法看下图参数通过配合的例子把父组件的赋值给每个子组件我们先不 本次分析的源码采用的是16.4.1的版本 核心接口 showImg(https://segmentfault.com/img/bVbeT9f?w=...

    joywek 评论0 收藏0
  • React源码解析React.children.map()

    摘要:一例子看到一个有趣的现象,就是多层嵌套的数组经过后,平铺成了,接下来以该例解析二作用源码进行基本的判断和初始化后,调用该方法就是重命名了,即解析注意,该数组在里面滚了一圈后,会结果三作用的包裹器源码第一次第二次如果字符串中有连续多个的话 showImg(https://segmentfault.com/img/remote/1460000019968077?w=1240&h=698);...

    kuangcaibao 评论0 收藏0

发表评论

0条评论

zzbo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<