1. Redux 和 Mobx它们都有统一维护管理应用状态的能力;
某一状态只有一个可信数据来源(通常命名为store,指状态容器);
操作更新状态方式统一,并且可控(通常以action方式提供更新状态的途径);
支持将store与React组件连接,如react-redux,mobx-react;通常使用状态管理库后,我们将React组件从业务上划分为两类:
1.容器组件(Container Components):负责处理具体业务和状态数据,将业务或状态处理函数传入展示型组件;
2.展示型组件(Presentation Components):负责展示视图,视图交互回调内调用传入的处理函数;
2. Mobx和Redux对比###
| 设计思想 | store | 数据可变性 | 约束性 | 异步处理 | 更新粒度 | 缺点 | 优点 | |
|---|---|---|---|---|---|---|---|---|
| Mobx | 面向对象响应式编程 | 多独立store | 直接修改原有对象 | 弱 | async/await | observable,更新粒度较细 | 数据回溯困难高度封装调试困难 | 学习成本低灵活 |
| Redux | 函数式编程 | 全局唯一store | 遵循开闭原则,不修改原有对象,生成新的对象 | 强 | 利用中间件redux-thunkredux-saga | dispatch进行广播,需通过对比来控制更新粒度 | 学习成本高约束性强 | 数据流可控、可追踪可维护性强 |
3. Mobx为什么很少和hook同时使用
Mobx直接赋值给类的属性即可,不需要操作state或props,所以使用Mobx时会更多的使用类组件,而不使用函数式组件,从而也减少了对hooks的使用