React 状态管理 | 青训营笔记

87 阅读2分钟

前端训练营 Day 11

  对于结构简单的页面,组件之间的层级关系较浅,可使用自上而下的数据流。但当页面结构较复杂时,跨层的组件通信变得复杂且难以实现。此时产生了“状态管理”,通过状态管理解决跨层组件数据通信与状态共享的问题。

  与 Vue、Angular 等框架不同,React 是纯 UI 层的前端框架,组件的状态完全由开发者决定,没有对数据的绑定。

  React 自带的状态管理工具有Local StateContext,第三方的状态管理工具gnu特性有如下分类:

  • 单向数据流:ReduxFlux
  • 双向数据绑定:Mobx
  • 原子状态管理:JotaiRecoil
  • 异步操作密集型:Rxjs

  对于子页面中的组件,可使用Local State在父组件与子组件间进行通信;对于自页面之间的通信,可由Context完成。

  Context解决了Local State多级传递的问题,但 Context是全局的,会造成耦合度较高且使用上较复杂,因此使用上要多加小心。

  在 React 状态管理中比较经典的是Redux,Redux 由 Flux 演化而来。Flux 采用单向流动的数据进行状态管理:视图(View)发出信息(Action)给派发者(Dispatcher),由 Dispatcher 执行回调函数。

  但是 Flux 有拆分过于复杂、只支持单 store 等缺点,且已不再使用。现在我们一般用 Redux:

  在 Redux 中,Action 与 Dispatcher、store 与 Dispatcher 不再强制绑定,增加了其灵活性。

  学习 React 的时候,感觉在“大”前端范围内许多思想也是通用的,隔壁 BubbleTea 也是将一个界面分成多个 Model,使用 Msg 进行通信,由 view() 渲染视图。

本文若有不足之处,欢迎纠正(≧^.^≦)喵~

我的其他笔记,可在掘金或 Github( github.com/DoudiNCer/I… )阅读