响应式系统与React | 青训营笔记

87 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第6天


一、本堂课重点内容:

  1. React的历史与应用
  2. React的设计思路
  3. React(hooks)的写法
  4. React的实现
  5. React状态管理库
  6. 应用级框架科普

二、详细知识点介绍:

2.1 React的历史与应用

应用:

  • 前端应用开发:如Facebook、Netflix网页版
  • 移动端原生应用:如Android、IOS的app
  • 桌面应用开发:如Electron

历史:

  • 2010年 Facebook 在其 php 生态中,引入了 xhp 框架,首次引入了组合式组件的思想,启发了后来的React的设计
  • 2011年 Jordan Walke 创造了FaxJS,也就是后来的React原型
  • 2012年在Facebook 收购 Instagram 后,该 FaxJS 项目在内部得到使用, Jordan Walke 基于 FaxJS 的经验开发出了React
  • 2014年-今天 生态大爆发,各种围绕React的新工具/新框架开始涌现

2.2 React的设计思路

响应式与转换式系统:

转换式系统:给定输入求解输出,例如 编译器、数值计算

响应式系统:监听事件消息驱动,例如 实时监控系统、UI界面

转换式系统 ≠ 响应式系统

响应式编程:

  1. 状态更新,UI自动更新
  2. 前端代码组件化,可复用,可封装
  3. 状态之间的相互依赖关系,只需声明即可

组件化:

  1. 组件是 组件的组合 / 原子组件
  2. 组件内拥有状态,外部不可见
  3. 父组件可将状态传入组件内部

组件设计:

  1. 组件声明了状态和UI的映射
  2. 组件有 Props/State 两种状态
  3. "组件"可由其他组件拼装而成

生命周期:

1.Mounting 挂载时 2.Updating 更新时 3.Unmounting 销毁时

image.png

2.3 React(hooks)的写法

1.useEffect() 副作用 hock 一般只执行一次 

2.useState() 更改状态 hock

2.4 React的实现

存在的问题: a. JSX不符合JS标准语法 b. 返回的JSX发生改变时,如何更新DOM c. State / Props更新时,要重新触发render函数 d. 虚拟DOM

解决:

  1. 语法只是虚拟的,最终会进行转义最后还是会转义成JavaScript语法
  2. 使用 虚拟DOM树 虚拟DOM树和真实的DOM树会建立一一对应的关系,当虚拟DOM树发生改变时,React会确保真实的DOM也发生相应的改变
  3. React 使用了 diff 算法,来查找改变的DOM节点

2.5 React状态管理库

⚠️ 核心思想:将状态抽离到UI外部进行统一管理

image.png

2.6 应用级框架科普

next.js / Blitz / Modern.js

三、课后个人总结:

了解了react的相关基础知识

五、引用参考:

  1. juejin.cn/post/684490…
  2. juejin.cn/post/712785…