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?
都要学
最后更新于
这有帮助吗?