经过6
个课时的学习我们对react
有了一个初步的了解,也将虚拟DOM
和真实DOM
做了对比。对jsx
的核心规则也做了举例说明。并且也做了相应的练习,相信经过前文的学习也可以编写一些复杂程度较低的网页需求。但是遇到一些复杂的比较高,元素比较多的页面的话,想之前一样吧所有代码全写在一个虚拟DOM
中就有点不太合适了。所以说接下来我们将要学到组件的概念。
但是在开始新的内容之前,我们先来对前面几节内容来做一个简单的回顾:
React
初探
什么是react
react
是一个用于构建用户界面的JavaScript
库react
是一个只关注界面的库
React
的特点
- 声明式编码
- 可跨平台开发移动端
- 不直接操作真实
DOM
- 使用虚拟
DOM
和Diffing
算法尽量减少DOM
交互 - 使用
jsx
语法来编写虚拟DOM
React
应用基础
使用react
- 引入
react
核心库和react-dom
库来操作虚拟DOM
react
库一定要在react-dom
库之前来引入- 直接在
HTML
中引入react
的话,一定要引入babel
库来解析jsx
代码编写
- 用
jsx
来创建虚拟DOM
- 编写
jsx
的<script>
标签的type
属性要写成text/babel
来调用babel
创建虚拟DOM
创建虚拟DOM
两种方法
jsx
语法直接创建- 原生
js
语法调用React.createElement
方法完成创建
创建虚拟DOM
两种方法对比
- 原生
js
创建在单层标签与jsx
没有什么区别 - 原生
js
创建多层嵌套标签则需要多层嵌套简洁性远不如jsx
jsx
最终会被babel
转换成原生js
语法,所以jsx
是React.createElement
的语法糖
虚拟DOM
和真实DOM
虚拟DOM
和真实DOM
的本质
- 虚拟
DOM
是一个js
对象 - 真实
DOM
是一个js
对象
虚拟DOM
和真实DOM
的区别
- 虚拟
DOM
更加轻量级 - 虚拟
DOM
只在react
内部使用 - 虚拟
DOM
必须由react
映射成真实DOM
才能呈现在页面上
JSX
基本规则
jsx
是类似于XML
的js
扩展语法jsx
的本质是React.createElement(compoment,props,...children)
方法的语法糖。jsx
可以使用HTML
标签,但是jsx
表达式中的的标签不是HTML/XML
标签jsx
内需要通过{}
来对js
表达式进行支持。jsx
任何标签中class
属性的指定必须用className
来指定jsx
内联样式必须使用style={{key: value}}
的方式来写jsx
虚拟DOM
只允许有一个根标签。jsx
虚拟DOM
中的任何一个标签都必须闭合。jsx
中的标签在被渲染时会检查标签首字母- 如果
jsx
中标签首字母小写,那么则将该标签渲染为HTML
中同名标签,若无同名标签则会报错。 - 如果
jsx
中标签首字母大写,那么react
就去渲染对应的组件,若该组件没有定义,则报错。
JSX
练习
react
会帮我们自动遍历数组jsx
用{}
引入的一定是一个表达式jsx
遍历生成元素的话,每个元素一定要有一个唯一的key
属性
以上便是对前面几个课时要点的一个复习与总结,接下来我们将进入react
组件的学习。
Copyright statement:The articles of this site are all original if there is no special explanation, indicate the source please when you reprint.
Link of this article:https://work.lynchow.com/article/review_002/