React状态管理 | 青训营笔记

81 阅读2分钟

这是我参加前端训练营笔记活动的第13天。

React状态管理(书接上回)

React状态管理简介

Mobx

它通过透明的函数响应式编程使得状态管理变得简单和可扩展,Mobx跟Vue的设计比较相似,是一个响应式的状态管理库。Mobx借助于装饰器的实现,使得代码更加简洁易懂。由于使用了可观察对象,所以Mobx可以做到直接修改状态,而不必像Redux一样编写繁琐的actions和reducers。 image.png Mobx的优势在于上手简单,可以直接修改状态,不需要编写繁琐的Action和Reducer,也不需要引入各种复杂的中间件,局部精确更新,免去了粒度控制烦恼,自始至终一份引用,不需要immutable,也没有复制对象的额外开销。因此前端数据流不太复杂的情况,使用Mobx,因为更加清晰,也便于维护。但是正是因为Mobx的灵活,Mobx的代码风格很难统一。
不过Mobx是不能实现时间旅行和回溯的,因此不太适合前端数据流比较复杂的场景。此外,随着React hooks,比如useReducer等的,以及React自身的原子型状态管理工具Recoil。Mobx的使用场景会被进一步压缩,目前的项目中使用Mobx的场景越来越小。

Recoil

Recoil是React官方内置的状态管理工具,一定程度上解决了Local State和Context的局限性,且能够兼容React的新特性比如Concurent模式等。

解决的问题:
1、组件间的状态共享只能通过将state提升至它们的公共祖先来实现,但这样做可能导致重新渲染一棵巨大组件树
2、Context只能存储单一值,无法存储多个各自拥有消费者的值的集合。