React状态管理|青训营笔记

67 阅读2分钟

什么是状态管理

React是单向数据流,属性通过Props自上而下传递,当组件的嵌套层很深的时候,会陷入嵌套地狱,而状态管理本身,解决的就是这种“嵌套”地狱的问题,解决的是跨层级组件之间的数据通信和状态共享
状态管理工具的本质:管理共享内存中的状态。
1.共享内存
2.管理状态
3.页面通信
4.组件通信
5.刷新失效

详细定义:单页应用的各个组件本身是共享内存的,如果将状态保存在内存中,

就可以读写统一内存中的变量,从而达到状态共享的目的。

状态管理工具

Vue: Vuex(Pinia)
Vuex的核心概念可以看一下这篇文章Vue 系列:Vuex vs Pinia - 掘金 (juejin.cn)
Angular: Service和Rxjs

为什么React有这么多状态管理工具

跟不同前端框架的定义有关,Vue和Angular双向数据绑定, 计算属性等,数据是响应式的, 控制视图刷新,拥有计算属性等,这些使得Vue和Angular需要状态管理的场景减少,此外其本身就包含了完整的状态管理工具,比如Vue的Vuex和Pinia, Angular的Service(RXjs)等, 从官方定调。而React不一-样, React是- 一个纯UI层的前端框架,UI = fn(state), React将状态的变动完全交给开发者。

React状态管理工具可以分为以下几类:

问题思考
1.为什么不能用window对象?

  • 全局污染,重复声明
  • 直接取值和赋值,数据变更不清晰?3.渲染粒度不可控
  • 无法进行时间旅行

2.react hooks给状态管理库的设计带来了哪些新思路?

父子通信较简单,而深层级、远距离组件的通信,则依赖于 "状态提升" + props 层层传递。于是,React 引入了 Context,一个用于解决组件 "跨级" 通信的官方方案。 但 Context 其实相当于 "状态提升"

用hooks进行状态管理主要有两种方式:

  • useContext+useReducer
  • useState+useEffect