1、在状态管理方面,都具备对应用状态进行统一维护和管理的能力;某个状态只有一个可信数据源(通常命名为store,指的是状态容器);操作更新状态统一可控(通常以action的形式提供更新状态的方式);支持store和React组件的连接,如react-redux、mobx-react;通常在使用状态管理库后,我们从业务上将React组件分为两种:容器组件(ContainerComponents):负责处理具体的业务和状态数据,将业务或状态处理功能传递给展现组件;PresentationComponents:负责展示视图,在视图交互回调中调用传入的处理函数;二、侧重点不同1.Redux更像是一种遵循Flux模式的实现。它是一个JavaScript库。它的重点在于:Action:描述动作相关信息的JavaScript对象,主要包括type属性和payload属性:Reducer:定义了应用程序的状态如何响应不同的动作(action)来更新状态;Store:管理action、reducer及其关系的对象,主要提供以下功能:1>.维护应用状态,支持读取访问状态(getState());2>.支持监听动作的分发和更新状态(dispatch(action));3>.支持订阅存储变化(subscribe(listener));4>.通过中间件(redux-thunk、redux-saga、redux-promise等)支持处理异步任务流2.Mobx是一个用于透明函数式响应式编程的状态管理库,它使状态管理变得简单且可扩展。它的重点是:Action:定义改变状态的动作函数,包括如何改变状态;Store:集中管理模块状态(State)和动作(action);推导(derivation):从应用状态推导出来的没有任何其他影响的数据,我们称之为推导(derivation),推导存在于以下几种情况:1>。用户界面;2>.派生数据,主要有两种派生方式:计算值:计算值总是可以使用纯函数从当前可观察状态中获得;Reactions:Reactions是状态改变时需要自动发生的副作用,需要读写Operation;3、设计思路不同。Redux遵循更多的函数式编程思想。Mobx设计更偏向于面向对象编程和响应式编程。通常,状态被打包到一个可观察的对象中。一旦状态对象发生变化,就可以自动获取。更新。4.店铺管理不同。Redux将所有共享数据集中在一个大型存储中。统一管理Mobx将状态划分为多个独立的Store,按照模块进行管理。5.不同的数据可变性。Redux强调对象状态对象的不变性,不能直接操作,而是在原有状态对象的基础上返回一个新的状态对象,最后返回应用程序之前的状态。Mobx可以直接使用新的值来更新state对象6.学习成本方面,Redux相对比较繁琐,流程多。需要配置,创建store,编写reducer,action,如果涉及到异步任务,还需要引入中间件Mobx。过程比较简单,根据文档上手比较快。
