首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
React源码
订阅
rancui
更多收藏集
微信扫码分享
微信
新浪微博
QQ
12篇文章 · 0订阅
React hooks 的基础概念:hooks链表
当函数组件进入render阶段时,会被renderWithHooks函数处理。函数组件作为一个函数,它的渲染其实就是函数调用,而函数组件又会调用React提供的hooks函数。初始挂载和更新时,所用的hooks函数是不同的,比如初次挂载时调用的useEffect,和后续更新时调…
Concurrent模式下React的更新行为 - 优先级模型
点击进入React源码调试仓库。 作为构建用户界面的JavaScript库,React以提升用户交互体验为核心,而实现这一目标较为重要的一点是优先响应用户交互触发的更新任务,其余不那么重要的任务要做出让步,我们把用户交互触发的任务称为高优先级任务,不那么重要的任务称为低优先级任…
React中的高优先级任务插队机制
点击进入React源码调试仓库。 在React的concurrent模式下,低优先级任务执行过程中,一旦有更高优先级的任务进来,那么这个低优先级的任务会被取消,优先执行高优先级任务。等高优先级任务做完了,低优先级任务会被重新做一遍。 我们用一个具体的例子来理解一下高优先级任务插…
一篇长文帮你彻底搞懂React的调度机制原理
点击进入React源码调试仓库。 Scheduler作为一个独立的包,可以独自承担起任务调度的职责,你只需要将任务和任务的优先级交给它,它就可以帮你管理任务,安排任务的执行。这就是React和Scheduler配合工作的模式。 对于多个任务,它会先执行优先级高的。对于单个任务,…
深入React合成事件机制原理
点击进入React源码调试仓库。 由于fiber机制的特点,生成一个fiber节点时,它对应的dom节点有可能还未挂载,onClick这样的事件处理函数作为fiber节点的prop,也就不能直接被绑定到真实的DOM节点上。 为此,React提供了一种“顶层注册,事件收集,统一触…
React源码 commit阶段详解
点击进入React源码调试仓库。 当render阶段完成后,意味着在内存中构建的workInProgress树所有更新工作已经完成,这包括树中fiber节点的更新、diff、effectTag的标记、effectList的收集。此时workInProgress树的完整形态如下:…
深入理解React Diff算法
点击进入React源码调试仓库。 上一篇扒一扒React计算状态的原理 之后,我们来分析一下Diff的过程。 fiber上的updateQueue经过React的一番计算之后,这个fiber已经有了新的状态,也就是state,对于类组件来说,state是在render函数里被使…
扒一扒React计算状态的原理
点击进入React源码调试仓库。 一旦用户的交互产生了更新,那么就会产生一个update对象去承载新的状态。多个update会连接成一个环装链表:updateQueue,挂载fiber上, 然后在该fiber的beginWork阶段会循环该updateQueue,依次处理其中的…
深挖React的completeWork
点击进入React源码调试仓库。 每个fiber节点在更新时都会经历两个阶段:beginWork和completeWork。在Diff之后(详见深入理解React Diff原理),workInProgress节点就会进入complete阶段。这个时候拿到的workInProgr…
ReactFiber节点的更新入口:beginWork
React的更新任务主要是调用一个叫做workLoop的工作循环去构建workInProgress树,构建过程分为两个阶段:向下遍历和向上回溯,向下和向上的过程中会对途径的每个节点进行beginWork和completeWork。 本文即将提到的beginWork是处理节点更新…