首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户9715713的专栏

    React源码解读之React Fiber5

    facebook为什么要使用重构ReactReact Fiber是什么React Fiber的核心算法 - react是如何中断重启任务的react fiber部分源码简化版前言该文章涉及的源码部分基于 甚至可能会超过16ms(在React官网就显示49.9ms)因为requestIdleCallback的一些限制原因,React源码中未使用requestIdleCallback,而是自己实现了一套类似的机制 下面是在React源码中Fiber的数据对象。其实说到底,Fiber就是一个对象。 Fiber数据结构下面是React源码中的Fiber对象的属性,具体可以直接看注释。 源码 ---太长不看系列下面是React中关于Fiber的一些核心源码---已删除了很多跟此次文章无关的代码,大家可以自行选择是否服用。

    47230编辑于 2023-01-09
  • 来自专栏进阶高级前端工程师

    React源码分析5-commit

    前两章讲到了,react 在 render 阶段的 completeUnitWork 执行完毕后,就执行 commitRoot 进入到了 commit 阶段,本章将讲解 commit 阶段执行过程源码。 insertOrAppendPlacementNode(finishedWork, before, parent); }}判断当前节点是否为单节点我们以 insertOrAppendPlacementNodeIntoContainer 为例看一下其源码 container; parentNode.appendChild(child); } // ...}这几步都是以 insertOrAppendPlacementNodeIntoContainer 为例看源码 return; } case Profiler: { return; } // ...}更新 HostComponent根据上面的 commitWork 的源码 总结接着第(4)章 render 阶段的流程图,补充上 commit 阶段的流程图,就构成了完整的 react 执行图了:图片

    49900编辑于 2022-10-10
  • 来自专栏进阶高级前端工程师

    React源码分析5-commit

    前两章讲到了,react 在 render 阶段的 completeUnitWork 执行完毕后,就执行 commitRoot 进入到了 commit 阶段,本章将讲解 commit 阶段执行过程源码。 insertOrAppendPlacementNode(finishedWork, before, parent); }}判断当前节点是否为单节点我们以 insertOrAppendPlacementNodeIntoContainer 为例看一下其源码 container; parentNode.appendChild(child); } // ...}这几步都是以 insertOrAppendPlacementNodeIntoContainer 为例看源码 return; } case Profiler: { return; } // ...}更新 HostComponent根据上面的 commitWork 的源码 总结接着第(4)章 render 阶段的流程图,补充上 commit 阶段的流程图,就构成了完整的 react 执行图了:图片

    36130编辑于 2022-11-30
  • 来自专栏进阶高级前端工程师

    React源码分析5-commit6

    前两章讲到了,react 在 render 阶段的 completeUnitWork 执行完毕后,就执行 commitRoot 进入到了 commit 阶段,本章将讲解 commit 阶段执行过程源码。 insertOrAppendPlacementNode(finishedWork, before, parent); }}判断当前节点是否为单节点我们以 insertOrAppendPlacementNodeIntoContainer 为例看一下其源码 container; parentNode.appendChild(child); } // ...}这几步都是以 insertOrAppendPlacementNodeIntoContainer 为例看源码 return; } case Profiler: { return; } // ...}更新 HostComponent根据上面的 commitWork 的源码 总结接着第(4)章 render 阶段的流程图,补充上 commit 阶段的流程图,就构成了完整的 react 执行图了:图片

    52520编辑于 2023-01-10
  • 来自专栏用户9715713的专栏

    React源码解读之任务调度5

    React 设计体系如人类社会一般,拨动时间轮盘的那一刻,你便成了穿梭在轮片中的一粒细沙,角逐过程处处都需要亮出你的属性,你重要吗?你无可替代吗?你有特殊权限吗?没有,那不好意思,请继续在轮片中循环。 我们第一节讲到 React 不同的组件使用?typeof 指定,针对这些不同类型的组件,定义了各自的处理方法,我们以常用的 ClassComponent 为例。 至此完成了任务调度的所有工作,当然在后面的过程,事件相关的处理是只字未提,React最新源码对于事件系统做了很大改动,我们放在后面章节详细讲解。 React 源码设计之精妙无法言尽,并且只是略读,完成本系列的粗略讲解后,后续会有更深入源码讲解。读源码为了什么?

    27830编辑于 2023-01-09
  • 来自专栏高级前端工程师学习必备

    react源码解析5.jsx&核心api

    react源码解析5.jsx&核心api 视频课程(高效学习):进入课程 课程目录: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api 其实virtual Dom只是在更新的时候快,在应用初始的时候不一定快 [react源码5.1] const div = document.createElement('div'); let str = '' for(let k in div){ str+=','+k } console.log(str) [react源码5.2] jsx&createElement jsx可以声明式的描述视图,提升开发效率 >babel编译jsx 站点查看jsx被编译后的结果 `React.createElement`的源码中做了如下几件事 处理config,把除了保留属性外的其他config赋值给props 把children 是这个function,源码中用ClassComponent.prototype.isReactComponent来区别二者。

    64020发布于 2021-06-04
  • 来自专栏用户8771298的专栏

    react源码解析5.jsx&核心api

    react源码解析5.jsx&核心api virtual Dom是什么 一句话概括就是,用js对象表示dom信息和结构,更新时重新渲染更新后的对象对应的dom,这个对象就是React.createElement 其实virtual Dom只是在更新的时候快,在应用初始的时候不一定快 react源码5.1 const div = document.createElement('div'); let str = '' for(let k in div){ str+=','+k } console.log(str) react源码5.2 jsx&createElement jsx可以声明式的描述视图,提升开发效率 ,这就是为什么jsx文件要声明import React from 'react'的原因(react17之后不用导入),你可以在 babel编译jsx 站点查看jsx被编译后的结果 ​ React.createElement 是这个function,源码中用ClassComponent.prototype.isReactComponent来区别二者。

    59420编辑于 2021-11-30
  • 来自专栏高级前端工程师必备

    react源码解析5.jsx&核心api

    react源码解析5.jsx&核心api 视频讲解(高效学习):进入学习 virtual Dom是什么 一句话概括就是,用js对象表示dom信息和结构,更新时重新渲染更新后的对象对应的dom,这个对象就是 ,这就是为什么jsx文件要声明import React from 'react'的原因(react17之后不用导入),你可以在 babel编译jsx 站点查看jsx被编译后的结果 `React.createElement`的源码中做了如下几件事 处理config,把除了保留属性外的其他config赋值给props 把children /ref属性 props: props,//props _owner: owner, }; return element; }; 这里的typeof表示的是组件的类型,例如在源码中有一个检查是否是合法 是这个function,源码中用ClassComponent.prototype.isReactComponent来区别二者。

    58720编辑于 2021-12-04
  • 来自专栏用户9715713的专栏

    React源码解读之更新的创建5

    React 的鲜活生命起源于 ReactDOM.render ,这个过程会为它的一生储备好很多必需品,我们顺着这个线索,一探婴儿般 React 应用诞生之初的悦然。 (batchedUpdates批量更新后续介绍)从这部分源码我们不难看出,render 和 createProtal 的用法的联系,通过DOM容器创建Root节点的形式function legacyCreateRootFromDOMContainer 继续往下我们可以看到,computeExpirationForFiber 方法用于过期时间的计算,我们先将源码片段放在此处。 基础上拓展React-Native能轻松自如,因为React只是做了一些规范和结构设定,具体实现是在React-Dom或React-Native中,如此达到了平台适配性。 以上是React创建更新的核心流程,任务调度我们下一章节再见。

    45540编辑于 2023-01-09
  • 来自专栏react源码分析

    react源码解析19.手写迷你版react5

    迷你react和真正的源码有哪些区别呢在render阶段我们遍历了整颗Fiber树,在源码中如果节点什么都没改变会命中优化的逻辑,然后跳过这个节点的遍历commit我们也遍历了整颗Fiber树,源码中只遍历带有 effect的Fiber节点,也就是遍历effectList每次遍历的时候我们都是新建节点,源码中某些条件会复用节点没有用到优先级第一步:渲染器和入口函数const React = { createElement

    <input onInput={updateValue} value={value} />

    Hello {value}

    ); React.render element) { prevSibling.sibling = newFiber; } prevSibling = newFiber; index++; }}const React
    <input onInput={updateValue} value={value} />

    Hello {value}

    ); React.render

    72540编辑于 2023-01-09
  • 来自专栏进阶高级前端工程师

    React源码分析5-commit_2023-02-21

    前两章讲到了,react 在 render 阶段的 completeUnitWork 执行完毕后,就执行 commitRoot 进入到了 commit 阶段,本章将讲解 commit 阶段执行过程源码。 finishedWork, before, parent); } } 判断当前节点是否为单节点 我们以 insertOrAppendPlacementNodeIntoContainer 为例看一下其源码 parentNode.appendChild(child); } // ... } 这几步都是以 insertOrAppendPlacementNodeIntoContainer 为例看源码 return; } case Profiler: { return; } // ... } 更新 HostComponent 根据上面的 commitWork 的源码 总结 接着第(4)章 render 阶段的流程图,补充上 commit 阶段的流程图,就构成了完整的 react 执行图了: 图片

    63340编辑于 2023-02-21
  • 来自专栏黄腾霄的博客

    2020-5-16-React-Router源码简析

    今天来和大家解析下React-Router的源码。 ---- React-Router是React生态中最重要的组件之一。 他提供了动态的前端路由功能,能让我们在前端应用实现,高效的SPA应用。 我们来一起看下它的源码 Router.js constructor(props) { super(props); this.state = { location: props.history.location 源码解析 我们可以从上述的源码中看到: Route的component,render,children三个属性是互斥的 优先级children>component>render children在无论路由匹配与否 小结 通过分析源码我们了解到了 React-Router通过监听location变化触发刷新,实现路由更新 利用React的Context机制,实现嵌套路由分析,和状态传递 Route组件中component at master · ReactTraining/react-router React Router: Declarative Routing for React.js ---- 本文会经常更新,请阅读原文

    1.2K30发布于 2020-06-10
  • 来自专栏用户9715713的专栏

    React源码--React Fiber

    facebook为什么要使用重构ReactReact Fiber是什么React Fiber的核心算法 - react是如何中断重启任务的react fiber部分源码简化版前言该文章涉及的源码部分基于 甚至可能会超过16ms(在React官网就显示49.9ms)因为requestIdleCallback的一些限制原因,React源码中未使用requestIdleCallback,而是自己实现了一套类似的机制 下面是在React源码中Fiber的数据对象。其实说到底,Fiber就是一个对象。 Fiber数据结构下面是React源码中的Fiber对象的属性,具体可以直接看注释。 源码 ---太长不看系列下面是React中关于Fiber的一些核心源码---已删除了很多跟此次文章无关的代码,大家可以自行选择是否服用。

    82431编辑于 2022-12-08
  • 来自专栏前端工程师提升

    react源码解析3.react源码架构

    react源码解析3.react源码架构 视频讲解(高效学习):进入学习 往期文章: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api 6.legacy和concurrent模式入口函数 7.Fiber架构 8.render阶段 9.diff算法 10.commit阶段 11.生命周期 12.状态更新流程 13.hooks源码 14. react源码架构和各个模块。 在真正的代码学习之前,我们需要在大脑中有一个react源码的地图,知道react渲染的大致流程和框架,这样才能从上帝视角看react是怎么更新的,来吧少年。 在第5章jsx我们会详细介绍jsx解析之后的结果。

    69440编辑于 2021-12-13
  • 来自专栏高级前端工程师必备

    react源码解析3.react源码架构

    react源码解析3.react源码架构 这一章的目的是让我们认识一下react源码架构和各个模块。 在真正的代码学习之前,我们需要在大脑中有一个react源码的地图,知道react渲染的大致流程和框架,这样才能从上帝视角看react是怎么更新的,来吧少年。 (渲染器): 将Reconciler中打好标签的节点渲染到视图上 一图胜千言: react源码3.1 jsx jsx是js语言的扩展,react通过babel词法解析(具体怎么转换可以查阅babel 在第5章jsx我们会详细介绍jsx解析之后的结果。 的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api 6.legacy和concurrent模式入口函数 7.Fiber架构 8.render阶段 9.diff算法 10.

    57040编辑于 2021-12-03
  • 来自专栏进阶高级前端工程师

    react源码解析3.react源码架构

    这一章的目的是让我们认识一下react源码架构和各个模块。 在真正的代码学习之前,我们需要在大脑中有一个react源码的地图,知道react渲染的大致流程和框架,这样才能从上帝视角看react是怎么更新的,来吧少年。 相关插件),将jsx转换成React.createElement,React.createElement方法返回virtual-dom对象(内存中用来描述dom阶段的对象),所有jsx本质上就是React.createElement 在第5章jsx我们会详细介绍jsx解析之后的结果。 react17会在每一帧分配一个时间(时间片)给js执行,如果在这个时间内js还没执行完,那就要暂停它的执行,等下一帧继续执行,把执行权交回给浏览器去绘制。

    49830编辑于 2022-09-24
  • 来自专栏用户8771298的专栏

    react源码解析3.react源码架构

    react源码解析3.react源码架构 视频讲解(高效学习):进入学习 往期文章: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api react源码架构和各个模块。 (渲染器): 将Reconciler中打好标签的节点渲染到视图上 一图胜千言: react源码3.1 react源码3.2 jsx jsx是js语言的扩展,react通过babel词法解析(具体怎么转换可以查阅 在第5章jsx我们会详细介绍jsx解析之后的结果。 源码1.2 开启concurrent react源码3.3

    63450编辑于 2021-12-10
  • 来自专栏react源码分析

    react源码解析3.react源码架构

    这一章的目的是让我们认识一下react源码架构和各个模块。 在真正的代码学习之前,我们需要在大脑中有一个react源码的地图,知道react渲染的大致流程和框架,这样才能从上帝视角看react是怎么更新的,来吧少年。 React.createElement,React.createElement方法返回virtual-dom对象(内存中用来描述dom阶段的对象),所有jsx本质上就是React.createElement 在第5章jsx我们会详细介绍jsx解析之后的结果。 react17会在每一帧分配一个时间(时间片)给js执行,如果在这个时间内js还没执行完,那就要暂停它的执行,等下一帧继续执行,把执行权交回给浏览器去绘制。

    51820编辑于 2023-01-10
  • 来自专栏用户8771298的专栏

    react源码解析3.react源码架构

    react源码解析3.react源码架构 视频课程(高效学习):进入课程 这一章的目的是让我们认识一下react源码架构和各个模块。 在真正的代码学习之前,我们需要在大脑中有一个react源码的地图,知道react渲染的大致流程和框架,这样才能从上帝视角看react是怎么更新的,来吧少年。 (渲染器): 将Reconciler中打好标签的节点渲染到视图上 一图胜千言: [react源码3.1] [react源码3.2] jsx jsx是js语言的扩展,react通过babel词法解析(具体怎么转换可以查阅 在第5章jsx我们会详细介绍jsx解析之后的结果。 源码1.2] 开启concurrent [react源码3.3]

    56240编辑于 2021-11-29
  • 来自专栏高级前端工程师学习必备

    react源码解析3.react源码架构

    react源码解析3.react源码架构 视频课程(高效学习):进入课程 课程目录: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx 这一章的目的是让我们认识一下react源码架构和各个模块。 (渲染器): 将Reconciler中打好标签的节点渲染到视图上 一图胜千言: [react源码3.1] [react源码3.2] jsx jsx是js语言的扩展,react通过babel词法解析(具体怎么转换可以查阅 在第5章jsx我们会详细介绍jsx解析之后的结果。 源码1.2] 开启concurrent [react源码3.3]

    61420发布于 2021-06-02
领券