React 基础与实践 | 青训营笔记

11 阅读2分钟

React 基础与实践

React 特性与简介

React 用于构建用户界面的JavaScript库

React的特点是:声明式、组件化、跨平台编写

React是用JavaScript构建快速响应大型Web应用程序的首选方式之一。

等待资源加载时间和大部分情况下浏览器单线程执行是影响Web性能的两大主要原因。

等待资源加载:React.Lazy\React.Suspense\ErrorBoundary

浏览器线程执行:异步更新、时间切片、React Fiber

React更新流程: React Fiber节点的更新在React的Render阶段,分为beginWork, completeWork两个阶段

  1. 渲染流程
  2. 更新流程
  3. 渲染优化

两棵树之间的比较更新算法复杂度为O(n3),n为树中元素的数量。开销太大,会影响react的效率,所以react对其进行了优化。将其复杂度优化为了O(n),具体方法

1) 只在同层间进行比较; 2) 不同类型的节点,直接替换

  1. 代码优化

总结:

优点:

快速响应: 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。】