美文网首页
ReactDOM.render 串联渲染链路 —— 概览

ReactDOM.render 串联渲染链路 —— 概览

作者: 弱冠而不立 | 来源:发表于2021-01-21 10:53 被阅读0次

    一个简单的 React Demo (react 版本 v17)

    // App.js
    import React from "react";
    function App() {
      return (
        <div>
          <span>sibiling1</span>
          <span>sibiling2</span>
        </div>
      );
    }
    
    export default App;
    
    //index.js
    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    
    ReactDOM.render(
      <App />,
      document.getElementById('root')
    );
    

    启动该Demo,然后打开Chrome 的 Performance 面板,点击下图红色圈圈所圈住的这个“记录”按钮:

    然后重新访问 Demo 页面对应的本地服务地址,待页面刷新后,终止记录,便能够得到如下图右下角所示的这样一个调用栈大图:

    放大红框中的部分

    定位“src/index.js”这个文件路径,我们就可以找到 ReactDOM.render 方法对应的调用栈,如下图所示:

    图中 scheduleUpdateOnFiber 方法的作用是调度更新,在由 ReactDOM.render 发起的首屏渲染这个场景下,它触发的就是 performSyncWorkOnRoot。performSyncWorkOnRoot 开启的正是我们反复强调的 render 阶段;而 commitRoot 方法开启的则是真实 DOM 的渲染过程(commit 阶段)。

    因此以scheduleUpdateOnFiber 和 commitRoot 两个方法为界,我们可以大致把 ReactDOM.render 的调用栈划分为三个阶段:

    1. 初始化阶段
    2. render 阶段
    3. commit 阶段

    相关文章

      网友评论

          本文标题:ReactDOM.render 串联渲染链路 —— 概览

          本文链接:https://www.haomeiwen.com/subject/wivkzktx.html