美文网首页
三、虚拟DOM渲染机制 ------ 2020-03-21

三、虚拟DOM渲染机制 ------ 2020-03-21

作者: 自己写了自己看 | 来源:发表于2020-03-21 15:13 被阅读0次

1、React把 JSX 语法,渲染成真实DOM经历了什么

虚拟DOM (JSX)=> 真实DOM(渲染在页面)

第一步:基于babel-preset-react-app 把 JSX 语法解析成:
React.createElement("div", null, "Hello World!!!");

JSX (<div>Hello World!!!</div>) 
  To
React.createElement("div", null, "Hello World!!!");

// React.createElement中的参数解析:
/**
* 1、标签名(或者函数组件、类组件名),一定存在;
*
* 2、给标签元素设置的属性(可能会为null),但是一定会存在;
*
* 3、第三项或者更多项:都是标签的子节点(可能是文本节点或者元素节点);
* 但是所有的元素节点都会变成 React.createElement() 这种形式;
*/


/**
* 第二个以后的项可能会存在几种情况:
* (1)不存在更多项:如果父节点中没有任何子元素;
* (2)为字符串:父节点中的子项中有文本;
* (3)为新的React.createElement() 方法:子项中有元素节点;
*/
(1) 
<div></div> 
  => 
React.createElement("div", null);

(2)
<div>Hello World!!!</div> 
  =>
React.createElement("div", null, "Hello World!!!");

(3)
<div>Hello World!!!<a></a></div>
=>
React.createElement(
   "div",
   null, 
   "Hello World!!!",
   React.createElement("a", null)
);
第二步:执行 React.createElement()方法,创建JSX虚拟DOM对象:

let virtualDOM = React.createElement(); 
// React.createElement()返回的才是真正意义上的虚拟DOM
console.log(virtualDOM);

React.createElement()函数执行后返回一个对象,其中有几个重要属性:
/**
*(1)type:标签名或者组件名;
*(2)props:props有几种情况,在下面分解开;
*/

props的情况:
/**
*(1)style、className等我们传递的属性;
*(2)children:children是子项;
* 第一种情况:没有children这个属性:说明不包含子节点;
* 第二种情况:children是一个字符串,说明子项是文本节点;
* 第三种情况:children是一个数组,子项包含元素节点;
*/
React.createElement()方法返回的对象
第三步:React.render()函数把虚拟DOM对象变为真实的DOM对象:

相关文章

  • 三、虚拟DOM渲染机制 ------ 2020-03-21

    1、React把 JSX 语法,渲染成真实DOM经历了什么

  • react的设计思想

    1.Virtual DOM(虚拟dom) 为什么要使用虚拟dom呢1.dom渲染在渲染中是最昂贵的,尽量减少dom...

  • 【通俗易懂】虚拟DOM,如何更高效DIFF

    我们都知道,通过虚拟DOM,可以减少DOM操作,提高页面渲染性能 要实现虚拟DOM,主要三部曲: compile ...

  • 2020-06-09虚拟(Dom)+Diff算发

    虚拟Dom 创建虚拟DOM(创建文件element.js>如何创建Dom以及虚拟Dom渲染真实的Dom) 主文件(...

  • Vue2.0的虚拟DOM渲染原理

    Vue2.0采用了虚拟DOM来代替对真实DOM的操作,最后通过某种机制来完成对真实DOM的更新,渲染视图。所谓的虚...

  • vue.js简介

    特点 虚拟DOM1、DOM :成对出现的标签;PC上渲染还可以,但是在移动端渲染DOM效果很差;2、虚拟DOM 采...

  • Vue 渲染机制-Rendering Mechanism 和 渲

    渲染机制 拥有虚拟 DOM 层有一些好处,最重要的是它让组件的渲染逻辑完全从真实 DOM 中解耦,并让它更直接地在...

  • useState原理

    首次渲染 ——调用App(),得到虚拟DOM1,把虚拟DOM1渲染成真实DOM用户点击button后,调用setN...

  • vue 虚拟dom

    vnode => dom虚拟 => 真是dom (vue 初始化渲染) 更新节点

  • 简述虚拟DOM和diff算法

    虚拟DOM 1.虚拟DOM的介绍:虚拟DOM就是一个真实DOM转换的JS对象。2.虚拟DOM的机制:在浏览器端用J...

网友评论

      本文标题:三、虚拟DOM渲染机制 ------ 2020-03-21

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