前端训练营 Day 11
对于结构简单的页面,组件之间的层级关系较浅,可使用自上而下的数据流。但当页面结构较复杂时,跨层的组件通信变得复杂且难以实现。此时产生了“状态管理”,通过状态管理解决跨层组件数据通信与状态共享的问题。
与 Vue、Angular 等框架不同,React 是纯 UI 层的前端框架,组件的状态完全由开发者决定,没有对数据的绑定。
React 自带的状态管理工具有Local State 和 Context,第三方的状态管理工具gnu特性有如下分类:
- 单向数据流:
Redux、Flux - 双向数据绑定:
Mobx - 原子状态管理:
Jotai、Recoil - 异步操作密集型:
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… )阅读