用了两年的react+redux,最近使用mobx完全替代redux做了两个项目,发现二者各有千秋:
redux优势在于全局状态共享,action(saga)、reducer、容器组件和视图组件分工明确,代码结构清晰。缺点就是书写繁琐,要定义一大堆ActionType、要在容器组件中把用到的state和action挨个connect进来。
mobx则更为模块化,将每一类的store和action合并为一个对象,store就是此对象的属性,action就是对象内定义的方法,在容器组件引入这个对象即可。缺点就是对于比较复杂的模块store文件过大,我自己开发的一个稍复杂的模块,store文件超过了500行,而同一个模块redux的每个文件极少超过150行。从代码结构和可维护性上将,redux略胜一筹。
二者都能胜任状态管理的要求,做选择时我认为只需要考虑一点:需不需要频繁的全局状态共享,需要则redux,不需要则mobx。
展开
评论