首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏进阶高级前端工程师

    React源码分析6-hooks源码6

    本文将讲解 hooks 的执行过程以及常用的 hooks 的源码。 引入 hooks我们以一个简单的 hooks 写法的 react 应用程序为例去寻找 hooks 源码:import { useState } from 'react';export default function 总结所以我们总结一下 renderWithHooks 这个函数,它所做的事情如下: 图片hooks 源码前面 hooks 的执行入口我们都找到了,现在我们看一下常用的一些 hooks 源码。 hooks 的源码,理解了 hooks 的设计思想和工作过程。 其他 hook 平时用的比较少,就不在这里展开讲了,但通过上面几个 hook 的源码讲解,其他 hook 看源码你应该也能看得懂。

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

    React源码分析6-hooks源码

    本文将讲解 hooks 的执行过程以及常用的 hooks 的源码。 引入 hooks我们以一个简单的 hooks 写法的 react 应用程序为例去寻找 hooks 源码:import { useState } from 'react';export default function 总结所以我们总结一下 renderWithHooks 这个函数,它所做的事情如下: 图片hooks 源码前面 hooks 的执行入口我们都找到了,现在我们看一下常用的一些 hooks 源码。 hooks 的源码,理解了 hooks 的设计思想和工作过程。 其他 hook 平时用的比较少,就不在这里展开讲了,但通过上面几个 hook 的源码讲解,其他 hook 看源码你应该也能看得懂。

    74830编辑于 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 执行图了:图片

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

    React源码分析6-hooks源码_2023-02-21

    本文将讲解 hooks 的执行过程以及常用的 hooks 的源码。 引入 hooks我们以一个简单的 hooks 写法的 react 应用程序为例去寻找 hooks 源码:import { useState } from 'react';export default function 总结所以我们总结一下 renderWithHooks 这个函数,它所做的事情如下: 图片hooks 源码前面 hooks 的执行入口我们都找到了,现在我们看一下常用的一些 hooks 源码。 hooks 的源码,理解了 hooks 的设计思想和工作过程。 其他 hook 平时用的比较少,就不在这里展开讲了,但通过上面几个 hook 的源码讲解,其他 hook 看源码你应该也能看得懂。

    97130编辑于 2023-02-21
  • 来自专栏进阶高级前端工程师

    react源码解析6.legacy模式和concurrent模式

    react启动的模式react有3种模式进入主体函数的入口,我们可以从 react官方文档 使用 Concurrent 模式(实验性)中对比三种模式:legacy 模式: ReactDOM.render 这是当前 React app 使用的方式。当前没有计划删除本模式,但是这个模式可能不支持这些新功能。 非 React 事件想使用这个功能必须使用 unstable_batchedUpdates。 performSyncWorkOnRoot(root);//render阶段的起点 render在第6章讲解 } else {//concurrent模式 //... ensureRootIsScheduled(root, eventTime);//确保root被调度 } }6.concurrent主要函数注释:function ensureRootIsScheduled

    41540编辑于 2022-09-24
  • 来自专栏前端工程师提升

    react源码解析6.legacy模式和concurrent模式

    视频讲解(高效学习):进入学习 往期文章: 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.手写hooks 15.scheduler &Lane 16.concurrent模式 17.context 18事件系统 19.手写迷你版react 20.总结&第一章的面试题解答 react启动的模式 react有3种模式进入主体函数的入口, performSyncWorkOnRoot(root);//render阶段的起点 render在第6章讲解 } else {//concurrent模式 //... ensureRootIsScheduled(root, eventTime);//确保root被调度 } } 6.concurrent主要函数注释: function ensureRootIsScheduled

    48020编辑于 2021-12-13
  • 来自专栏用户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的一些核心源码---已删除了很多跟此次文章无关的代码,大家可以自行选择是否服用。

    83131编辑于 2022-12-08
  • 来自专栏进阶高级前端工程师

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

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

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

    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源码架构和各个模块。 (渲染器): 将Reconciler中打好标签的节点渲染到视图上 一图胜千言: react源码3.1 react源码3.2 jsx jsx是js语言的扩展,react通过babel词法解析(具体怎么转换可以查阅 源码1.2 开启concurrent react源码3.3

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

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

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

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

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

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

    52820编辑于 2023-01-10
  • 来自专栏前端工程师提升

    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是怎么更新的,来吧少年。 React.createElement,React.createElement方法返回virtual-dom对象(内存中用来描述dom阶段的对象),所有jsx本质上就是React.createElement

    70340编辑于 2021-12-13
  • 来自专栏用户8771298的专栏

    react源码解析6.legacy和concurrent模式入口函数

    react源码解析6.legacy和concurrent模式入口函数 视频讲解(高效学习):进入学习 往期文章: 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.手写hooks 15.scheduler&Lane 16.concurrent模式 17.context 18事件系统 19.手写迷你版react 20.总结&第一章的面试题解答 两种模式函数主要执行过程 1.主要执行流程: react源码6.3 2.详细函数调用过程: 用demo_0跟着视频调试更加清晰,黄色部分是主要任务是创建fiberRootNode和rootFiber ,红色部分是创建Update,蓝色部分是调度render阶段的入口函数 react源码6.2 3.legacy模式: render调用legacyRenderSubtreeIntoContainer

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

    react源码解析6.legacy和concurrent模式入口函数

    react源码解析6.legacy和concurrent模式入口函数 视频讲解(高效学习):进入学习 react启动的模式 react有3种模式进入主体函数的入口,我们可以从 react官方文档 <a 特性对比: react源码6.1 legacy 模式在合成事件中有自动批处理的功能,但仅限于一个浏览器任务。 两种模式函数主要执行过程 1.主要执行流程: react源码6.3 2.详细函数调用过程: 用demo_0跟着视频调试更加清晰,黄色部分是主要任务是创建fiberRootNode和rootFiber performSyncWorkOnRoot(root);//render阶段的起点 render在第6章讲解 } else {//concurrent模式 //... ensureRootIsScheduled(root, eventTime);//确保root被调度 } } 6.concurrent主要函数注释: function ensureRootIsScheduled

    42330编辑于 2021-12-04
  • 来自专栏高级前端工程师学习必备

    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 这一章的目的是让我们认识一下react源码架构和各个模块。 (渲染器): 将Reconciler中打好标签的节点渲染到视图上 一图胜千言: [react源码3.1] [react源码3.2] jsx jsx是js语言的扩展,react通过babel词法解析(具体怎么转换可以查阅 源码1.2] 开启concurrent [react源码3.3]

    62120发布于 2021-06-02
  • 来自专栏用户8771298的专栏

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

    react源码解析3.react源码架构 视频课程(高效学习):进入课程 这一章的目的是让我们认识一下react源码架构和各个模块。 在真正的代码学习之前,我们需要在大脑中有一个react源码的地图,知道react渲染的大致流程和框架,这样才能从上帝视角看react是怎么更新的,来吧少年。 (渲染器): 将Reconciler中打好标签的节点渲染到视图上 一图胜千言: [react源码3.1] [react源码3.2] jsx jsx是js语言的扩展,react通过babel词法解析(具体怎么转换可以查阅 [react源码15.2] Lane模型 react之前的版本用expirationTime属性代表优先级,该优先级和IO不能很好的搭配工作(io的优先级高于cpu的优先级),现在有了更加细粒度的优先级表示方法 源码1.2] 开启concurrent [react源码3.3]

    57340编辑于 2021-11-29
  • 来自专栏用户8771298的专栏

    react源码解析6.legacy和concurrent模式入口函数

    react源码解析6.legacy和concurrent模式入口函数 视频讲解(高效学习):点击学习 课程目录: 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.手写hooks 15.scheduler&Lane 16.concurrent模式 17.context 18事件系统 19.手写迷你版react 20.总结&第一章的面试题解答 两种模式函数主要执行过程 1.主要执行流程: react源码6.3 2.详细函数调用过程: 用demo_0跟着视频调试更加清晰,黄色部分是主要任务是创建fiberRootNode和rootFiber ,红色部分是创建Update,蓝色部分是调度render阶段的入口函数 react源码6.2 3.legacy模式: render调用legacyRenderSubtreeIntoContainer

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

    react源码解析6.legacy和concurrent模式入口函数

    react源码解析6.legacy和concurrent模式入口函数 视频课程(高效学习):进入课程 react启动的模式 react有3种模式进入主体函数的入口,我们可以从 react官方文档 <a 特性对比: [react源码6.1] legacy 模式在合成事件中有自动批处理的功能,但仅限于一个浏览器任务。 两种模式函数主要执行过程 1.主要执行流程: [react源码6.3] 2.详细函数调用过程: 用demo_0跟着视频调试更加清晰,黄色部分是主要任务是创建fiberRootNode和rootFiber ,红色部分是创建Update,蓝色部分是调度render阶段的入口函数 [react源码6.2] 3.legacy模式: render调用legacyRenderSubtreeIntoContainer performSyncWorkOnRoot(root);//render阶段的起点 render在第6章讲解 } else {//concurrent模式 //...

    59500发布于 2021-06-05
  • 来自专栏用户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的一些核心源码---已删除了很多跟此次文章无关的代码,大家可以自行选择是否服用。

    58620编辑于 2022-12-19
  • 来自专栏进阶高级前端工程师

    React源码分析--hooks源码

    本文将讲解 hooks 的执行过程以及常用的 hooks 的源码。 引入 hooks我们以一个简单的 hooks 写法的 react 应用程序为例去寻找 hooks 源码:import { useState } from 'react';export default function 总结所以我们总结一下 renderWithHooks 这个函数,它所做的事情如下: 图片hooks 源码前面 hooks 的执行入口我们都找到了,现在我们看一下常用的一些 hooks 源码。 hooks 的源码,理解了 hooks 的设计思想和工作过程。 其他 hook 平时用的比较少,就不在这里展开讲了,但通过上面几个 hook 的源码讲解,其他 hook 看源码你应该也能看得懂。

    3.3K40编辑于 2022-12-20
领券