0%

字节前端青训营第 4 天(上)

React 的应用场景

  • 网页应用,Facebok,Instagram,Netflix 网页版
  • 移动原生应用:Instagram,Discord,Oculus
  • 桌面应用:结合 Electron
  • 3D:react-three-fiber

React 的设计思路

UI 编程的痛点

  • 状态更新,UI 不会自动更新,需要手动调用 dom
  • 缺少代码层面的封装与隔离,没有组件化
  • UI 之间存在数据依赖关系,需要手动维护;如果数据依赖关系链太长,会出现 callback hell

转换式系统 & 响应式系统

转换式系统:给定输入,求解输出,如编译器,计算器
响应式系统:监听事件,由消息驱动

前端代码并不需要大量的计算,更多的是需要去处理一些事件(比如用户的点击);另外当事件发生时,我们需要进行一些响应(比如改变界面)。这两个特点决定了转换式系统对于前端写起来是很难受的,我们需要一种新的方式。

依据上面的分析,我们对于 React 设计的期望也很容易得出:

  • 状态更新,UI 自动更新
  • 前端代码组件化,可以复用,可以封装
  • 状态之间

组件化

  • 组件是组件的组合 / 原子组件
  • 组件内拥有状态,且外部不可见
  • 父组件可以把状态传递给子组件

状态归属

状态提升:当多个组件需要共享一个状态的时候,我们需要不断地提升状态,所以我们需要状态管理库。

注意 React 不是双向数据流,是单向的。子组件只是执行了父组件传递过来的函数,而没有把任何的状态传递回去给父组件。(函数在 Js 中是一等公民,所以可以作为一个变量传递)

组件设计

  • 组件声明了状态以及 UI 的映射
  • 组件有 state(内部状态)和 props(外部状态)两种状态
  • 组件可以由其它组件拼装而成

状态管理库

使用状态管理库的弊端:组件的复用性降低了,一般使用于业务代码

常用的状态管理库有:

  • redux
  • mobx
  • xstate
  • recoil
  • reduck(来源于 modern.js)

什么东西应该放到状态管理库?
如果你觉得某个东西整个 APP 有多处可能用到的,就放进去,比如说用户头像,这样也可以减少我们发送的请求数。

React 组件什么时候被渲染?

  • 首次渲染
  • props 变化
  • state 变化
  • context 变化

应用级框架科普

  • Next.js
  • Modern.js
  • Blitz

本文标题:字节前端青训营第 4 天(上)

文章作者:Flower-F

发布时间:2022年01月19日 - 10:03

最后更新:2022年01月19日 - 17:36

-------------本文结束,感谢您的阅读-------------

欢迎关注我的其它发布渠道