#流程

fiber 不是树是链表

#预备知识 jsx

在 react17RC 之前,使用 jsx 时往往需要导入 react 编译器再调用 React.createElement 方法

而在 react17RC 之后,react 提供了新的导出 jsx-runtime,由 babel,ts 等编译器自动调用 jsx 方法

详情见官方链接

#万恶之源 createRoot

React17RC 后,通过 ReactDom 包中的 createRoot 函数来创建应用的根节点 fiberRootNode

通过 createRoot 函数返回的 render 函数来开始渲染传入的 react 组件,传入的 jsx 已经被编译器转化为 ReactElement

export function createRoot(container: Container) {
  const root = createContainer(container)

  return {
    render(element: ReactElement) {
      return updateContainer(element, root)
    },
  }
}

TODO