Babel 编译结果
Babel 可以通过特定的插件(如 @babel/plugin-transform-react-jsx
)将 JSX 语法转换为 React.createElement
调用,例如:
<div>
< img src="avatar.png" className="profile" />
<Hello />
</div>
About 3 min
Babel 可以通过特定的插件(如 @babel/plugin-transform-react-jsx
)将 JSX 语法转换为 React.createElement
调用,例如:
<div>
< img src="avatar.png" className="profile" />
<Hello />
</div>
React DOM 的渲染采用 render 方法
假设需要渲染如下真实 DOM:
<ul id="list">
<li class="item">Item1</li>
<li class="item">Item2</li>
<li class="item">Item3</li>
</ul>
React 的渲染工作流是值从组件数据改变到组件实际更新发生的过程。
开发者编写 JSX 代码:
Babel 编译:
React.createElement
调用。例如,<div>Hello, world!</div>
会被转换成 React.createElement('div', null, 'Hello, world!')
。React.createElement 调用:
React.createElement
方法来创建 React 元素。这些元素是描述 UI 树的 JavaScript 对象。ReactElement 调用:
React.createElement
方法返回一个 ReactElement
实例,它是 React 元素的内部表示。ReactElement
包含了创建真实 DOM 节点所需的所有信息,如标签名、属性和子元素。作为参数处理:
ReactElement
实例会被作为参数传递给 React 的渲染系统。React 会使用这些元素来构建虚拟 DOM。“虚拟 DOM”:
ReactDoM.render():
ReactDOM.render()
方法是将虚拟 DOM 渲染到真实 DOM 的入口点。这个方法接收一个 ReactElement
和一个 DOM 节点的选择器或引用作为参数。真实 DOM 传入:
virtual dom 是单独存在的一个库, github: https://github.com/Matt-Esch/virtual-dom
在认识 virtual dom 之前,先认识一下 Real DOM:
Real DOM,真实 DOM
,意思为文档对象模型,是一个结构化文本的抽象,在页面渲染出的每一个结点都是一个真实 DOM
结构,如下:
Real DOM(真实DOM)是浏览器原生提供的,它表示当前页面的实际HTML结构。当页面中的数据发生变化时,Real DOM 会进行重新渲染和更新。它是我们与网页进行交互的基础,通过操作Real DOM,我们可以改变网页的内容、样式和行为。