Part1-React基本语法
预习视频
视频P1-P20
今日学习目标
了解React的MVC设计理念
能够使用脚手架创建React项目
掌握JSX语法
掌握组件化开发
一、React简介【了解】
React 是一个用于构建用户界面的 JavaScript 库,它是 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。React 主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。由于拥有较高的性能,且代码逻辑非常简单,越来越多的人已开始关注和使用它。
中文官网:https://react.docschina.org
二、React特点【了解】
1、声明式设计
react是面向数据编程,不需要直接去控制dom,你只要把数据操作好,react自己会去帮你操作dom,可以节省很多操作dom的代码。这就是声明式开发。
2、使用JSX语法
JSX 是 JavaScript 语法的扩展。React 开发大部分使用 JSX 语法(在JSX中可以将HTML于JS混写)。
3、灵活
react所控制的dom就是id为root的dom,页面上的其他dom元素你页可以使用jq等其他框架 。可以和其他库并存。
4、使用虚拟DOM、高效
虚拟DOM其实质是一个JavaScript对象,当数据和状态发生了变化,都会被自动高效的同步到虚拟DOM中,最后再将仅变化的部分同步到DOM中(不需要整个DOM树重新渲染)。
5、组件化开发
通过 React 构建组件,使得代码更加容易得到复用和维护,能够很好的应用在大项目的开发中。
6、单向数据流
react是单向数据流,父组件传递给子组件的数据,子组件能够使用,但是不能直接通过this.props修改。 这样让数据清晰代码容易维护。
三、创建React脚手架项目【熟悉】
1、构建一个名为 demo 项目
demo 项目注意:项目路径不能有中文,不能有怪异符号,包括“!”也不行!!!!
如图,创建成功:

如果安装过于缓慢,或者有报错,请参考下文:
https://www.jianshu.com/p/91bf816cc1cc
2、进入这个文件夹,并且跑起来
项目运行,自动打开谷歌浏览器看见项目页面(第一次项目运行会很慢,要耐心等待)
四、hello_world程序编写【熟悉】
1、删除在src目录下所有文件
2、src目录下新建index.js文件作为入口文件
ReactDOM.render(参数1,参数2)
参数1 是JSX语法的标签/组件
参数2 是要把参数1这个标签渲染到的位置
五、VSCode中JSX的编写优化【了解】
在vscode中的 文件>首选项>设置 中,直接搜索 include Language ,进入 settings.json :
找到 "emmet.includeLanguages" 字段,添加:
搜索 trigger ,找到如图位置,打钩:
设置后就可以通过 标签名+Tab 键快速码出标签
六、ES5与ES6面向对象复习【重要】
1、ES5封装与继承
我们声明一个构造函数:
现在我想用一个Dog类来继承这个Animal类,那么就可以:
2、ES6封装与继承
我们声明一个类:
再定义一个Dog类来继承Animal类:
七、组件化开发【重要】
在React的项目中,都是使用组件化开发的模式,所以,我们可以把刚才的hello world的h1定义为一个组件:
定义组件分为3步:
1、导入React核心模块
2、定义组件类
3、导出组件
在src目录下新建App.js文件:
在需要引入该组件的index.js中,导入,就可以直接使用这个组件了:
!!注意:
1、定义组件的时候,return 后面只能有一个根标签,不能有多个,但这个标签内部可以有其他多个标签
2、使用组件的时候,首字母必须大写
3、如果最外层实在不想放置一层div根目录,可以使用 <></> 空标签代替
八、JSX语法糖【重要】
React 使用 JSX 来替代常规的 JavaScript。JSX 是一个看起来很像 XML 的 JavaScript 语法扩展,在React中会被babel编译为JavaScript。
1、JSX的特点
JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化。
它是类型安全的,在编译过程中就能发现错误。
使用 JSX 编写模板更加简单快速。
2、JSX几个注意的格式:
1、React的JSX是使用大写和小写字母来区分本地组件和HTML组件
(如:html就用 div p h1 , 组件就用 MyButton App Home List等 )
2、JSX和html的标签属性的区别
for
htmlFor
for在JS中为for循环关键字
class
className
class在JS中为声明类关键字
style
需使用JS对象(使用双花括号)
组件中:
注意:图片查找路径在src目录,所以引入的时候从src目录触发查找文件
3、React的JSX创建出来的是虚拟DOM,而不是HTML
在index.js中:
4、JSX变量引用、三目运算符、for循环
在JSX中,想要调用变量,需要在return中直接使用单花括号--**{}**调用
index.js中:
App3.js中
总结:在jsx语法中,需要书写js代码的时候,请先加上{ } 再书写js语法
九、VSCode中,代码片段扩展的安装【了解】
在扩展搜索栏中搜索react,选择下图的扩展进行安装
安装后,通过 rcc+Tab ,得到组件的代码片段, clg+回车 快速得到console.log()代码
十、事件、state与setState【重要】
App5.js中:
十一、state的简写【熟悉】
App6.js中:
十二、setState是异步的【熟悉】
我们可以通过以下代码验证 setState 是异步或是同步:
另外 setState 还有回调函数:
如果想要在修改数据后调用该数据,就可以使用回调函数。
十三、累加【重要】
我们来实现一个累加的效果:
点击按钮则数字加1
这里考点在于 ++ 会修改原数据,而在 react 中,修改state中的数据必须通过setState,因此这里不能对 this.state.num 直接进行 ++ 操作。
十四、双向数据绑定【重要】
React中没有类似vue的 v-model 指令,因此要实现双向数据绑定,只能操作 value 和 onChange(或onInput)事件。
这里做个补充:
如果input上写的是箭头函数,那么应当这么写,才能获取到事件对象e:
十五、state中数组的修改【重要】
我们对数组进行操作时,大部分数组方法会修改到原数组,因此建议先将数组深拷贝一次,修改后再重新赋值:
十六、【验证】为什么修改state只能通过setState【了解】
只有setState可以重新触发render函数对页面进行再次渲染,如果直接对state进行修改,那么是无法显示到界面中的,因此想要修改state,只能通过setState。
十七、【验证】key用id好还是index好?【了解】
当然是id好,看代码:
十八、案例:Tab栏【重要】
App7.js中:
com.css中:
十九、作业
作业1(初级)
独立完成Tab栏。
作业2(中级)
请使用下列数组:
完成以下效果:
作业3(高级)
在完成作业2的基础上添加点击删除指定项的操作。
最后更新于
这有帮助吗?


