1. 初识虚拟DOM
- 描述
- 什么是虚拟
DOM
呢?本质是Object
类型的对象(一般对象) - 我们为什么要了解虚拟
DOM
呢?很简单,因为React
要用
- 什么是虚拟
- 我们第三点会使用
React
分别使用js
和jsx
创建虚拟DOM
,在此呢,我们先要了解两大js
库:react.js
:react
的核心库react-dom.js
:用于支持react操作DOM- 注意:加
development
表示开发模式的库
- 开始进入对比分析
- 我们先使用用
js
创建虚拟DOM
- 我们先使用用
运行效果:
如图分析:
一、
React.createElement
函数创建虚拟DOM
需要三个参数,若是想要内部添加字标签,继续使用React.createElement
创建 1. 标签体 2. 标签属性 3. 标签内内容 二、ReactDOM.render
将虚拟DOM
渲染到页面中需要两个参数 1.VDOM
虚拟DOM
2. 渲染的容器document.getElementById('test')
- 在
React
中呢,我们大都使用.jsx
语法,可以理解为和.js
一样,就是文件后缀不一样。现在我们用.jsx
语法创建虚拟DOM
运行效果:
如图分析:
- 我们使用
.jsx
语法也能创建虚拟DOM
,结构和我们的html
一致,更加方便阅读与编程- 我们的样式可以写在外部
- 我们在使用
.jsx
语法的时候注意一点,是script
标签的type
一定要写babel
,并且要将babel
引入,而babel
的主要作用就是将jsx
转为js
。- 当然我们有很多方法去吧babel下载到本地,比如访问官网;再比如我们直接打开此链接;甚至可以访问稍微低一点旧的版本的
babel
;当然包括我在上面所用的版本
- 虚拟
DOM
和真实DOM
来一波比较,React
为什么要用虚拟DOM
?
运行效果: 进行分析:
- 本质是
Object
类型的对象(一般对象)- ***虚拟
DOM
比较'轻'***,真实DOM
比较'重',因为虚拟DOM
是React
内部在用,无需真实DOM
上那么多属性- 虚拟
DOM
最终会被Reac
t转化为真实DOM
,呈现在页面上
2. jsx语法规则:
认识了虚拟DOM
之后,我们也通过对比知道了使用jsx
创建虚拟DOM
要比js
更加方便编写与阅读,所以react
使用jsx
语法编写代码,那么就介绍下jsx
的语法规则:
- 定义虚拟
DOM
时,不要写引号 - 标签中混入
JS
表达式时要用{}
- 样式的类名指定要用
className
,不要用class
- 内联样式要用
style={{key: value}}
的形式去写 - 只有一个根标签
- 标签必须闭合
- 标签首字母
- 若小写字母开头,则将改标签转为
html
中同名元素,若html
中无该标签对应的同名元素,则报错 - 若大写字母开头,
react
就去渲染对应的组件,若组件没有定义,则报错。这提一嘴组件,我们下节就介绍组件。
- 若小写字母开头,则将改标签转为
示例: