最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • React源码学习

    正文概述 掘金(用户9099043627489)   2021-03-05   637

    调试

    •   git clone https://github.com/facebook/react.git
      
    • 安装依赖

    •   yarn build react,react-dom,scheduler --type=NODE
      
    •   cd build/node_modules/react
        yarn link
        cd build/node_modules/react-dom
        yarn link
      
    • 新建项目

    •   yarn link react react-dom
        yarn unlink react react-dom
      

    目录结构

    react——react核心,包含全局API

    scheduler——调度器实现

    shared——公用方法、全局变量

    react-dom\react-art...——渲染相关文件夹

    react-reconciler——协调器

    react架构

    • Scheduler(调度器)—— 调度任务的优先级,高优任务优先进入Reconciler
    • Reconciler(协调器)—— 负责找出变化的组件
    • Renderer(渲染器)—— 负责将变化的组件渲染到页面上

    Fiber

    • 对于架构来说,Reconciler基于Fiber实现

    • 作为数据结构来说,每一个fiber节点对应一个react Element,保存组件类型以及对应的DOM节点信息

    • 作为工作单元来说,每个

      Fiber

      保存了本次更新中该组件改变的状态、要执行的工作

    实现原理:

    React源码学习

    工作原理:

    在内存中构建并直接替换的技术叫做双缓存

    React源码学习

    currentFiber.alternate === workInProgressFiber;
    workInProgressFiber.alternate === currentFiber;
    

    jsx到js

    在JS中写标签,但是实际上最终编译时又会被babel转换为JavaScript。

    React源码学习

    所有子节点作为后续参数传入。children:第三个参数以及后续参数的数组。

    根据首字母大小写确定翻译成字符串还是变量,react中认为字符串是原生dom节点。

    React.createElement

    export function createElement(type, config, children) {
      // 处理参数
      return ReactElement(type,key,ref,self,source,ReactCurrentOwner.current,props);
    }
    

    jsx是一种描述当前组件内容的数据结构,不包含更新调度的相关信息,如组件更新中的优先级、组件的state等。这些内容都会被包含在fiber节点中。

    Component&prueComponent

    代码

    createRef&ref

    代码

    Children

    代码

    React.createRef

    代码

    ...

    创建更新过程

    • **ReactDom.render
      **

    • setState

    • forceUpdate

    render

    创建reactRoot\创建FiberRoot、RootFiber\创建更新

    React源码学习

    setState

    forceUpdate


    起源地下载网 » React源码学习

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元