0x00 引入文件
- babel.min.js //解析JSX语法成纯JS语法的库(原作用:ES6转ES5)
- react.development.js //React核心库
- react-dom.development.js //操作DOM的React拓展库
0x01 起步
1. 插入script
标签
```html
<script type="text/babel"></script>
2. 创建虚拟DOM元素对象
var vDom = <h1>Hello React!</h1>
其中的h1没有双引号,不是字符串,是JSX的语法
3. 将虚拟DOM渲染到页面真实DOM容器中
ReactDOM.render(vDom, document.getElementById('test'))
其中的ReactDOM
来自react-dom.development.js
//可使用Chrome的React开发者工具插件(React Developer Tools)调试
0x02 JSX理解与基本使用
创建虚拟DOM元素
-
React提供了一些API来创建一种特别的JS对象
- 纯JS(一般不用)
React.createElement('h1', {id: 'myTitle'}, title)
上面创建的就是一个简单的虚拟DOM对象
- JSX:
<h1 id='myTitle'>{title}</h1>
- 纯JS(一般不用)
- 虚拟DOM对象最终都会被React转换为真实的DOM
- 开发时只需要操作React的虚拟DOM相关数据,React会转换为真实DOM变化而更新界面
渲染虚拟DOM(元素)
- 语法:
ReactDOM.render(virtualDOM, containerDOM)
- 作用:将虚拟DOM元素渲染到页面中的真实容器DOM中显示
- 参数说明
- 参数1:纯JS或JSX创建的虚拟DOM对象
- 参数2:用来包含虚拟DOM元素的真实DOM元素对象(一般是一个div)
虚拟DOM优势
- 比真实的DOM“轻”
- 更新不重绘页面,渲染时才重绘
JSX简介
- 全称:JavaScript XML
- React定义的一种类似于XML的JS拓展语法:XML+JS
- 作用:用来创建React虚拟DOM(元素)对象
var ele = <h1>Hello JSX!</h1>
它不是字符串,也不是HTML/XML标签;
最终产生一个JS对象 - 标签名任意:HTML标签或其他标签
- 标签属性任意:HTML标签属性或其他
- 基本语法规则
- 遇到
<
开头的代码,以标签语法解析:
HTML同名标签转换为HTML同名元素,
其他标签需要特别解析 - 遇到以
{
开头的代码,以JS语法解析:
标签中的JS代码必须用{}包含
- 遇到
- bable.js的作用
- 浏览器不能直接解析JSX代码,需要babel转译为纯JS才能运行
- 只要用了JSX,都要加上
type="text/babel"
,声明需要babel来处理
JSX基本使用
-
创建虚拟DOM
JS语法(本质):
const msg = 'I Like You!' const myId = 'Atguigu' const vDom1 = React.createElement('h2', {id: myId.toLowerCase()}, msg.toUpperCase()) //参数:标签类型,标签属性:id=myId的小写, 标签内容
//这里是JS语法而非babel语法,故script标签的type为js
babel语法(babel会转换成JS写法):
const vDom2 = <h3 id={myId.toUpperCase()}>{msg.toLowerCase()}</h3>
//script标签的type为babel
-
渲染虚拟DOM
ReactDom.render(vDom1, document.getElementById('test1')) //参数:要渲染的虚拟DOM对象,要渲染到的标签
//在js中写debugger
相当于在Chrome中加断点
0x03 后记
发现用Markdown写这个笔记太费时间了,还是改用有道云笔记吧
//End of Article