React 构建用户界面的javascript库,主要用于构建UI界面。Instagram, 2013年开源。
特点:
1、声明式的设计
2、高效,采用虚拟DOM来实现DOM的渲染,最大限度的减少DOM的操作。
3、灵活,跟其他库灵活搭配。
4、JSX,俗称JS里面写HTML,Javascript语法的扩展。
5、组件化,模块化。代码容易复用。
6、单向数据流。没有实现数据的双向绑定。数据 》视图 》事件 》数据
创建项目:
1、通过script引入使用,仅用于学习调试使用。
2、通过react的脚手架,创建项目进行开发,部署。
1 | step1:安装node.js,目的是安装包管理器npm,在CMD中验证是否安装成功: |
React 元素渲染
1 | let h1 = <h1>helloworld</h1> |
案例1:
1 | 实现页面时刻的显示 |
案例2;
1 | // react函数式组件,组件的头字母需要大写 |
React Jsx
优点:
1、JSX执行更快,编译为Javascript代码时进行了优化。
2、类型更安全,编译过程如果出错就不能编译,及时发现错误。
3、JSX编写模板更加简单快速。
注意:
1、JSX必须要有根节点。
2、正常的普通HTML元素要小写。如果大写,默认认为是组件。
JSX表达式
1、由HTML元素构成
2、中间如果需要插入变量,用{}
3、{}中间可以使用表达式,一个{}只能使用一个表达式
4、{}中间表达式中,可以使用JSX对象
5、属性和HTML内容一样,都是用{}来插入内容
案例:
1 | let time = new Date().toLocaleTimeString() |
JSX_STYLE 样式
1、class或style中,不可以存在多个class属性
1 | 错误表达式: |
2、style样式中,如果存在多个单词的属性组合,第二个单词开始,首字母大写。或者,使用引号括起来,否则会报错。
1 | let examplestyle = { |
3、多个类共存的操作
1 | let classStr = "redBg" |
4、注释:必须在括号的表达式内书写,否则报错
1 | let classStr2 = ['abc2', 'redBg2'].join(" ") |
React 组件
函数式与类组件的区别和使用,函数式比较简单,一般用于静态没有交互内容的组件页面。类组件,一般又称为动态组件,一般会有交互或者数据修改的操作。
1、函数式组件
1 | //函数式组件 |
2、类组件
1 | //类组件 |
3、复合组件:组件中又有其他的组件。复合组件中既可以有类组件,也可以有函数组件。
1 | import React from 'react'; |
React State
(相当于VUE的DATA,但是使用方式与VUE不一致)