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

242 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第10天。本节课的主题是【响应式系统与 React】,授课老师为牛岱。

本篇笔记分别对课程中所讲的几个要点进行一些解读,如若有误,欢迎大家在评论区交流,指出不当之处。

0. 前置知识

  • 前端基础(JS CSS HTML)
  • 基础算法
  • DOM相关API操作

1. 正式课程

01. React的历史和运用

1.前端应用开发

2.移动原生应用开发

3.结合Electron进行桌面应用开发

4.3D应用

….

  • 2010年,FB引入xhp框架,首次引入组合式组件的思想,启发后来的React设计

  • 2011年,React原型FaxJS被开发

    • 响应式:状态更新时,UI自动更新
  • 2012年,FB收购INS,开始运用FaxJS

  • 2013年,React开源(有创始人视频,React is a JS library for building UI)

  • 2014-now,React生态大爆发

02. React的设计思路

UI设计痛点

  • 状态更新时,UI不自动更新,需手动调用DOM更新
  • 代码欠缺组件层面的封装和隔离
  • UI数据依赖需要手动维护

转换式系统:输入→输出,编译器,数值计算

响应式系统:监听事件,消息驱动。监控系统。UI界面

事件—>执行回调—>状态变更—>更新UI

DOM是浏览器的渲染,不属于JS

conclusion:

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

状态归属问题:

状态归属于两个节点向上寻找到最近的祖宗节点上

组件

  • 内部拥有私有状态State
  • 组件接受外部的Props状态提供复用性
  • 根据当前的State/Props 返回一个UI

生命周期

  • Mounting
  • Updating
  • Unmounting

03. React(hooks)写法

hooks:现在常用写法

render:组件函数(const APP(()=》)…)

挂载到mount/update上

useState 传入一个初始值,返回一个状态,和set该状态的函数,用户可以调用该函数来实现状态修改

useEffect(()=>{ 传入一个函数和一个数组,数组是状态的数组,称作依赖项,该函数在mount时,和依赖项被set时执行

//有副作用的函数,要传入useEffect 来执行,副作用除了单纯的计算外,还要做其他事情,如网络请求,更新DOM,localStorage等。 })

Hook适用法则:

  1. 不要在循环,条件或嵌套函数中调用hook

04. React的实现

Problem1:JSX不符合JS标准语法

将JSX转成符合React语法的东西

P2:返回的JSX改变时,如何更新DOM

Virtual DOM(虚拟DOM)

image.png 指令:C

声明:

响应:

Diff,虚拟DOM更新到真实DOM

P3:State/Props更新时,要重新触发render函数

05. React状态管理库

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

  • redux
  • xstate
  • mobx

状态机:当前状态收到外部事件,迁移到下一个事件

06. 应用级框架科普

image.png

End

image.png