React 基础与实践
React 特性与简介
React 用于构建用户界面的JavaScript库
React的特点是:声明式、组件化、跨平台编写
React是用JavaScript构建快速响应大型Web应用程序的首选方式之一。
等待资源加载时间和大部分情况下浏览器单线程执行是影响Web性能的两大主要原因。
等待资源加载:React.Lazy\React.Suspense\ErrorBoundary
浏览器线程执行:异步更新、时间切片、React Fiber
React更新流程: React Fiber节点的更新在React的Render阶段,分为beginWork, completeWork两个阶段。
- 渲染流程
- 更新流程
- 渲染优化
两棵树之间的比较更新算法复杂度为O(n3),n为树中元素的数量。开销太大,会影响react的效率,所以react对其进行了优化。将其复杂度优化为了O(n),具体方法
1) 只在同层间进行比较; 2) 不同类型的节点,直接替换
- 代码优化
总结:
优点:
快速响应: Fiber
组件化:复用性强
声明式编程
跨平台:只需修改渲染器
缺点:
大型应用需要配套学习 状态管理 路由工具
不适合小型应用,需要用babel处理
React新知识
用React开发Web应用
用React开发Web应用——组件
class组件:
继承+构造函数
this
生命周期
render方法
函数式组件:
没有生命周期
借助Hook
return JSk
函数式相较于Class的优点:
代码量骤减,组件干净清爽
没有复杂的生命周期
支持自定义HOOK,逻辑复用方便
Hook规则&原则
只能在最顶层使用HOOK
【React怎么知道哪个state对应哪个useState?】
【React靠的是HOOK调用的顺序】
只能在React函数中调用HOOK
在React函数组件中或自定义Hook中调用
自定义HOOK必须以use开头
Hook中的state是完全隔离的
【自定义 Hook 如何获取独立的 state?
每次调用 Hook,它都会获取独立的 state。由于我们直接调用了 useFriendStatus,从 React 的角度来看,我们的组件只是调用了 useState 和 useEffect。】