从零开始的REACT | 青训营笔记

61 阅读2分钟

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

React的历史与应用

应用场景

  • 写前端网页
  • 移动端应用开发
  • 结合Electron进行桌面应用

发展历史

人们有需求—>新事物的出现

image.png

image.png

React设计思路

响应式编程

转换式系统

  • 给定输入,求解输出
  • 编译器、数值计算等

响应式系统

  • 监听事件、消息驱动
  • 监控系统、UI界面等

image.png

UI编程痛点与期望

image.png

组件化

  1. 组件是组建的组合或原子组件

  2. 组件内部拥有自己的状态,外部不可见

  3. 父组件可将状态传入组件内部

  4. 组件声明了状态和UI的映射

  5. 组件有Props/State两种状态

  6. “组件”可由其他组件拼装而成

React生命周期

image.png

Reacthooks)写法

不要再循环或嵌套函数中调用hooks

useState

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

useEffect

传入一个函数,和一个数组,数组是状态的数组,称作依赖项,该函数在 mount时,和依赖项被 set 的时候会执行。

有副作用的函数,要传入useEffect来执行。副作用代表除了单纯的计算之外,还要做其它的一些事情,比如网络请求,更新DOMlocalStorage 存储数据等。

React实现

三个问题

image.png

Problem1

转译

Problem2

状态改变实现实时更新

image.png

三个过程

image.png

如何求diff

目的:计算速度要快,更新次数要少

需要tradeoff(平衡)

image.png

实现局部最优值

  • 替换不同类型的元素
  • 更新同类型的DOM元素
  • 递归同类型的组件元素

React状态管理库

核心思想

将状态抽离到UI外部进行统一管理

状态管理库推荐

  • redux
  • xstate
  • mobx
  • recoil

状态机

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

image.png