React 的 Virtual DOM 是一个虚拟概念,下面两种类型都对应了 Virtual DOM

  • React Element
  • Fiber

在 Fiber 出现之前,DOM Diff 算法作用在 React Element 上

在 Fiber 出现后,DOM Diff 算法发生在 Fiber 和 WorkInProgress Fiber 之间,并计算更新

  • 提供并行( Concurrent Mode )的核心是 Fiber
  • 提供渲染能力的是 Render (eg.ReactDOM.render)
  • 提供 DOM Diff 的模块是 Reconciler
render = Reconciler(HostConfig)// HostConfig 告诉 React 增加、修改节点的操作方法

调和器(Reconciler)将元素层级关系、更新 diff 和渲染操作整合在一起

  • Virtual DOM(在这里指 Fiber):对组件层级结构的描述
  • Reconciliation:计算 DOM Diff
  • HostConfig:对于 React 渲染在具体端( DOM / React Native 等 )的封装
    • 插入元素的能力
    • 删除元素的能力
    • 改变元素属性的能力
    • 替换元素的能力

Reconciler 允许我们自定义 Render

const Reconsiler = require('react-reconciler');const HostCOnfig = {// You'll need to implement some methods here.// See below for more information and examples.
};const MyRender = Reconciler(HostConfig);const RendererPublicAPI = {render(element, container, callback) {// Call MyRenderer.updateContainer() to schedule changes on the roots.// See ReactDOM, REact Native, or React ART for practical examples.}
}module.exports = RendererPublicAPI;

更多资料请参考:https://github.com/facebook/react/tree/main/packages/react-reconciler

React Reconciler相关推荐

  1. 前端vue适配不同的分辨率_浅析 React / Vue 跨端渲染原理与实现

    当下的前端同学对 React 与 Vue 的组件化开发想必不会陌生,RN 与 Weex 的跨界也常为我们所津津乐道.UI 框架在实现这样的跨端渲染时需要做哪些工作,其技术方案能否借鉴乃至应用到我们自己 ...

  2. 前端架构设计第六课工程化构建、编译、运行

    12 如何理解 AST 实现和编译原理? 经常留意前端开发技术的同学一定对 AST 技术不陌生.AST 技术是现代化前端基建和工程化建设的基石:Babel.Webpack.ESLint.代码压缩工具等 ...

  3. 前端开发:如何正确地跨端?

    简介: 面对多种多样的跨端诉求,有哪些跨端方案?跨端的本质是什么?作为业务技术开发者,应该怎么做?本文分享阿里巴巴ICBU技术部在跨端开发上的一些思考,介绍了当前主流的跨端方案,以及跨端开发的经验心得 ...

  4. Taro3跨端跨框架原理初探

    背景 在项目中,我们用到了Taro3进行跨端开发,在这里分享下Taro3的一些跨端跨框架原理,也是希望能帮助自己更好的去理解Taro背后的事情,也能加速定位问题.此文章也是起到一个抛砖引玉的效果,让自 ...

  5. taro更新页面数据_Reconciler

    Taro 的运行时包括 DOM.BOM.React 兼容层.Vue 兼容层等内容,而不同的端平台或开发框架都有可能需要对 Taro 运行时进行侵入定制. 为了解耦,我们参考了 React Reconc ...

  6. react源码解析之stack reconciler

    关于源码解读的系列文章,可以关注我的github的这个仓库, 现在才刚刚写,后续有空就写点.争取把react源码剖析透学习透.有不正确的地方希望大家帮忙指正.大家互相学习,共同进步. 本篇文章是官方文 ...

  7. React 调和(Reconciler)原理理解

    文章目录 Fiber Fiber 更新机制 双缓冲树 render阶段 commit 阶段 总结 Fiber Reactv15及之前,React 对于虚拟 DOM 是采用 递归方式 遍历更新的,一次更 ...

  8. React 中的“栈调和”(Stack Reconciler)过程是怎样的?

    React 中的"栈调和"(Stack Reconciler)过程是怎样的?   如果我们不清楚 React 15 的运作机制,就无从把握它的局限性:如果我们不能确切地把握 Rea ...

  9. Understanding The React Source Code

    Understanding The React Source Code - Initial Rendering (Simple Component) I UI updating, in its ess ...

最新文章

  1. 【论文】ICLR 2020 九篇满分论文!!!
  2. 81.游戏项目-物体任意角度飞行和停止
  3. 2019 年 8 月编程语言排行榜,Java涨幅不行!
  4. linux一行多个命令行,如何在一行中运行多个Linux命令
  5. zillow房价预测比赛_Kaggle竞赛 —— 房价预测 (House Prices)
  6. 如果女孩子一辈子不结婚,那会是怎样的人生?
  7. 涂鸦板制作教程——其中的重做和撤消我觉得不错
  8. 魔域私服怎么老服务器中断,魔域私服技术文章-服务器端比较正确的数据库解释文件...
  9. python程序编写应注意哪些问题_Python程序员鲜为人知但你应该知道的17个问题
  10. linux 配置 MP3 RMVB 解码器
  11. RazorSQL Mac(SQL数据库查询工具)含激活码
  12. html+css基础教程之CSS 透明边框和样式
  13. RStudio的安装
  14. 学生党白嫖服务器-不会吧不会吧,你还在买学生机吗?
  15. 《拆掉思维里的墙》的读后感作文900字
  16. 【敬伟ps教程】图层相关知识
  17. cardboard 效果_如何在iPhone上设置Google Cardboard
  18. Kubernetes 存活探针和就绪探针的最佳实践
  19. 【Java选择语句(if,else,switch)】
  20. python数字推盘游戏怎么显示步数_Python游戏开发:《最强大脑》同款游戏【数字华容道】...

热门文章

  1. JavaScript实现手机震动效果
  2. C语言中的void和void指针-void*
  3. 在线版音乐播放器APP(一)
  4. 机器学习的学习形式分类
  5. 全国 2020 NOIP试题 微信步数(walk)
  6. linux 如何让程序后台执行
  7. python非线性规划求解_Python之建模规划篇--非线性规划
  8. js问题之判断是否是火狐、IE浏览器
  9. 广工计算机组成原理考试,广工计算机组成原理期末考试B卷(杨卫平)
  10. [万字长文]使用 React 重写学成在线前端项目 I 代码完整可运行,步骤有详解