首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户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
  • 来自专栏用户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]

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

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

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

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

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

    react源码解析3.react源码架构 视频讲解(高效学习):进入学习 往期文章: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api react源码架构和各个模块。 在真正的代码学习之前,我们需要在大脑中有一个react源码的地图,知道react渲染的大致流程和框架,这样才能从上帝视角看react是怎么更新的,来吧少年。 (渲染器): 将Reconciler中打好标签的节点渲染到视图上 一图胜千言: react源码3.1 react源码3.2 jsx jsx是js语言的扩展,react通过babel词法解析(具体怎么转换可以查阅 源码1.2 开启concurrent react源码3.3

    63450编辑于 2021-12-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

    69440编辑于 2021-12-13
  • 来自专栏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还没执行完,那就要暂停它的执行,等下一帧继续执行,把执行权交回给浏览器去绘制。

    51820编辑于 2023-01-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.

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

    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还没执行完,那就要暂停它的执行,等下一帧继续执行,把执行权交回给浏览器去绘制。

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

    57920编辑于 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
  • 来自专栏js笔记

    react源码调试

    clone源码 git clone https://github.com/facebook/react.git 安装依赖 cd react yarn build源码 npm run build react /index,react/jsx,react-dom/index,scheduler --type=NODE 为源码创建软链 cd build/node_modules/react npm link cd build/node_modules/react-dom npm link create-react-app创建项目 npx create-react-app demo cd demo npm link react react-dom

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

    45240编辑于 2022-11-29
  • 来自专栏杨龙飞前端

    读懂react源码

    2019-11-06 1、最重要的两个目录,reactreact-dom,(react-reconciler后续会很重要) 2、使用flow检查js的类型 3、react.createElement( type, props, children) 4、createElement 源码在ReactElement.js里,最终会 return element = {     // This tag allows  us to uniquely identify this as a React Element     $$typeof: REACT_ELEMENT_TYPE,     // Built-in properties >   回调用函数形式:<input ref={(input)=>{this.inputref=input}}>   createRef形式:constrotor(){this.inputref = React.CreateRef 用法上,createRef,创建的ref取组件时多了一层current,例如this.inputref.current.value,回调和字符串形式的会直接使用this.inputref.value 6、React.forwardRef

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

    54230编辑于 2022-10-25
  • 来自专栏前端工程

    React源码学习入门(一)新手如何学习React源码

    React源码学习入门(一)新手如何学习React源码 众所周知,对于前端开发来说,React现在已经是非常流行的深受大众喜爱的框架,在我们日常中使用非常广泛: 学习React源码可以帮助我们更深入地理解 因此从本文开始,我将开启一个React源码学习的专栏。 从一个完全新手的视角来分析阐述React背后的运作原理,包括但不限于: 由浅入深地讲解React源码运行机制 通过UML图辅助分析源码 单模块的拆解分析 Stack和Fiber架构独立讲解 核心算法辅助图解 动手实现自己的mini React版本 对于新手来说,如何更好地学习React源码,有几点建议: 1. 否则读起源码可能会比较吃力。 另外,你需要熟练地使用过React,通读React官方文档,了解React各个特性的使用方式,不然在分析源码时可能会因为对功能的不熟悉而增大理解难度。 2.

    67050编辑于 2022-09-21
  • 来自专栏用户9715713的专栏

    React源码解读之React Fiber

    facebook为什么要使用重构ReactReact Fiber是什么React Fiber的核心算法 - react是如何中断重启任务的react fiber部分源码简化版前言该文章涉及的源码部分基于 下面是在React源码中Fiber的数据对象。其实说到底,Fiber就是一个对象。 源码 ---太长不看系列下面是React中关于Fiber的一些核心源码---已删除了很多跟此次文章无关的代码,大家可以自行选择是否服用。 Fiber的核心算法 - react是如何中断重启任务的react fiber部分源码简化版前言该文章涉及的源码部分基于React v17.0.2why React Fiber浏览器渲染过程从浏览器的运行机制谈起 源码 ---太长不看系列下面是React中关于Fiber的一些核心源码---已删除了很多跟此次文章无关的代码,大家可以自行选择是否服用。

    62720编辑于 2022-09-27
  • 来自专栏用户9715713的专栏

    react源码分析:实现react时间分片

    本节将从时间分片的实现剖析react的异步渲染原理,阅读本文你讲可以了解时间分片是什么为什么需要时间分片时间分片在react中是如何运行的时间分片的极简实现什么是时间分片上文提到过,时间分片其实就是一个固定而连续且有间隔的时间区间固定 有间隔:在进入下一个分片前,会有一定时间的间隔 这些解释比较抽象,可以更加通俗去理解固定:每天固定工作8小时 连续:每天都要上班 有间隔:明天上班前会休息一段时间 为什么需要时间分片我们知道,react 为了实现遍历一会,休息一会,我们可以将整个过程分解为以下三个步骤分片开启分片中断、分片重启延迟执行这三个步骤与时间分片的三个特性一一对应实现分片开启 - 固定时间分片是独立于React的节点遍历流程的, 应用根节点 Schedule调度()}调度入口()这段时间分片的伪代码相对于react源码的实现,少了很多逻辑判断,并且集中了起来,应该会相对好理解很多。 在源码阅读的过程中,我觉得时间分片的实现已经非常惊艳了,没想到后面优先级调度的设计对我更是无可匹敌的冲击。

    58920编辑于 2023-01-03
  • 来自专栏用户9715713的专栏

    react源码分析:实现react时间分片

    本节将从时间分片的实现剖析react的异步渲染原理,阅读本文你讲可以了解时间分片是什么为什么需要时间分片时间分片在react中是如何运行的时间分片的极简实现什么是时间分片上文提到过,时间分片其实就是一个固定而连续且有间隔的时间区间固定 有间隔:在进入下一个分片前,会有一定时间的间隔 这些解释比较抽象,可以更加通俗去理解固定:每天固定工作8小时 连续:每天都要上班 有间隔:明天上班前会休息一段时间 为什么需要时间分片我们知道,react 为了实现遍历一会,休息一会,我们可以将整个过程分解为以下三个步骤分片开启分片中断、分片重启延迟执行这三个步骤与时间分片的三个特性一一对应实现分片开启 - 固定时间分片是独立于React的节点遍历流程的, 应用根节点 Schedule调度()}调度入口()这段时间分片的伪代码相对于react源码的实现,少了很多逻辑判断,并且集中了起来,应该会相对好理解很多。 在源码阅读的过程中,我觉得时间分片的实现已经非常惊艳了,没想到后面优先级调度的设计对我更是无可匹敌的冲击。

    1.2K30编辑于 2022-10-17
  • 来自专栏前端干货和生活感悟

    React源码解析之React.createContext()

    前言: 由于childContext在React17中会被废弃,所以不去分析它了,主要是新 API— —createContext()的讲解 一、React.createContext() 作用: 方便祖先组件与后代组件 (中间隔了好多层组件)传值 使用: context.js: import React from 'react'; const contextTestOne={ name:'chen', length ://zh-hans.reactjs.org/docs/context.html#contextprovider 源码: /** * Copyright (c) Facebook, Inc. and * * @flow */ import {REACT_PROVIDER_TYPE, REACT_CONTEXT_TYPE} from 'shared/ReactSymbols'; import //我们只希望最多有两个并发渲染器:React Native(主要)和Fabric(次要); // React DOM(主要)和React ART(次要)。

    1.6K10发布于 2019-09-05
  • 来自专栏用户9715713的专栏

    react源码之实现react时间分片

    本节将从时间分片的实现剖析react的异步渲染原理,阅读本文你讲可以了解时间分片是什么为什么需要时间分片时间分片在react中是如何运行的时间分片的极简实现什么是时间分片上文提到过,时间分片其实就是一个固定而连续且有间隔的时间区间固定 有间隔:在进入下一个分片前,会有一定时间的间隔 这些解释比较抽象,可以更加通俗去理解固定:每天固定工作8小时 连续:每天都要上班 有间隔:明天上班前会休息一段时间 为什么需要时间分片我们知道,react 为了实现遍历一会,休息一会,我们可以将整个过程分解为以下三个步骤分片开启分片中断、分片重启延迟执行这三个步骤与时间分片的三个特性一一对应实现分片开启 - 固定时间分片是独立于React的节点遍历流程的, 应用根节点 Schedule调度()}调度入口()这段时间分片的伪代码相对于react源码的实现,少了很多逻辑判断,并且集中了起来,应该会相对好理解很多。 在源码阅读的过程中,我觉得时间分片的实现已经非常惊艳了,没想到后面优先级调度的设计对我更是无可匹敌的冲击。

    60620编辑于 2022-12-05
领券