ReactDOM.Render的源码

175 阅读1分钟

ReactDOM.render(element, container[, callback])

在提供的 container 里渲染一个 React 元素,并返回对该组件的引用(或者针对无状态组件返回 null ,常见的用法就是:

ReactDOM.render(<App />, document.getElementById('root'));

ReactDOM.render的源码

const ReactDOM: Object = {
  //服务端使用hydrate方法渲染节点
  hydrate(element: React$Node, container: DOMContainer, callback: ?Function) {
    invariant(
      isValidContainer(container),
      'Target container is not a DOM element.',
    );

    // TODO: throw or warn if we couldn't hydrate?
    return legacyRenderSubtreeIntoContainer(
      null,
      element,
      container,
      //true是让服务端尽可能复用节点,提高性能
      true,
      callback,
    );
  },

  render(
    //元素
    element: React$Element<any>,
    //容器
    container: DOMContainer,
    //应用渲染结束后,调用的函数
    callback: ?Function,
  ) {
    //错误抓取
    invariant(
      isValidContainer(container),
      'Target container is not a DOM element.',
    );
    //render方法本质是返回了函数legacyRenderSubtreeIntoContainer
    return legacyRenderSubtreeIntoContainer(
      null,
      element,
      container,
      //render不会复用节点,因为是前端渲染
      false,
      callback,
    );
  },
}

基于本人对ReactDOM.Render的了解不多,以下为大家赠送一张 ReactDOM.Render 的流程图大家可以看一看哦 image.png