75. React起手式

React起手式

如何引入React

对原生JS要求比较高,需要记忆的东西非常少

两种方式

CDN(有点麻烦,不太有人用)

需要引入两个库

<script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>

cjs和umd的区别

cjs全称CommonJS,是Node.js支持的模块规范

umd是统一模块定义,兼容各种模块规范(含浏览器)

理论上优先使用umd,同时支持Node.js和浏览器

最新的模块规范是使用import和export关键字

import

通过webpack引入React

import from

注意大小写,尽量保持一致

不用自己试,因为等会用create-react-app代替

其他

除webpack外,rollup,parcel也支持上面写法

如何引入React?

新手用create-react-app,老手用webpack/rollup

官方安装说明:https://github.com/facebook/create-react-app

在windows系统中,npx不是太友好,以下是方方上课演示的。

React初体验

讲了react createElement

用React实现+1

相当难

想知道失败原因,全靠你的JS基础知识

失败是因为APP=React.create...只执行了一次

如何让它重新执行,以获取n的最新值

记不记得6个6, 函数可以获取最新值

复习:6个6面试题

setTimeout(fn, 1000):1000毫秒后执行fn,即不早于1000毫秒

立即执行函数

函数与延迟执行

对比普通代码与函数

这是普通代码

这是函数(不讨论参数)

普通代码立即求值,读取a的当前值

函数会等调用时再求值,即延迟求值。且求值时才会读取a的最新值

对比React元素和函数组件

对比

启示

函数App2是延迟执行的代码,会在被调用的时候执行

小结

React元素

createElement的返回值element可以代表一个div

但element并不是真正的div(DOM对象)

所以我们一般称element为虚拟DOM对象

()=>React元素

返回element的函数,也可以代表一个div

这个函数可以多次执行,每次得到最新的虚拟div

React会对比两个虚拟div, 找出不同,局部更新视图

找不同的算法叫DOM Diff算法

JSX初体验

想要使用JSX,可以使用CDN,引入babel

webpack内置了babel

create-react-app, 安装好后只剩下index.js和,index.html

使用JSX的注意事项

注意className,不是class

插入变量,标签里面所有的JS代码都要用{}包起来

如果你需要变量n,那么就用{}把n包起来 如果你需要对象,那么就要用{}把对象包起来,如 {{name:'Jack'}}

习惯return后面加()

条件判断与循环控制

循环语句

总结

引入React & ReactDOM

CDN方式:react.js, react-dom.js, babel.js

也可以直接import React from 'react'

React.createElement

创建虚拟DOM对象

函数的作用:多次创建虚拟DOM对象

DOM Diff是什么

JSX

将XML转译为React.createElement

使用{}插入JS代码

create-react-app默认将JS当作JSX处理

条件判断,循环要用原生JS实现

该学Vue还是学React?

都要学

最后更新于

这有帮助吗?