作为一个注释:我已经阅读了Redux的文档(Baobab也是如此),并且我已经做了很多Google搜索和测试.
为什么Redux应用程序只有一个商店?
我理解单店设置与多店设置的优缺点(在这个主题上有很多关于SO的问答).
IMO,这个架构决策属于应用程序开发人员根据他们的项目需求.那么为什么Redux如此强烈建议,几乎到了强制性的声音(虽然没有什么能阻止我们制作多个商店)?
编辑:转换为单店后的反馈
在使用redux处理许多人认为复杂的SPA之后几个月,我可以说单一商店结构一直是一种纯粹的乐趣.
有几点可能有助于其他人理解为什么单个商店与许多商店在很多很多用例中都是一个没有实际意义的问题:
一些指示
构建redux商店的真正挑战在于决定如何构建它.首先,因为在路上改变结构只是一个主要的痛苦.其次,因为它在很大程度上决定了您将如何使用,并查询您的应用数据的任何过程.关于如何构建商店有很多建议.在我们的例子中,我们发现以下是理想的:
{
apis: { // data from various services
api1: {},
api2: {},
...
},
components: {} // UI state data for each widget, component, you name it
session: {} // session-specific information
}
Run Code Online (Sandbox Code Playgroud)
希望这些反馈能够帮助他人.
对于那些一直想知道如何"轻松"管理单个商店的人来说,这可能会很快变得复杂.有一些工具可以帮助隔离商店的结构依赖性/逻辑.
有Normalizr其标准化基础上的模式数据.然后它提供了一个界面来处理数据并获取数据的其他部分id,就像字典一样.
当时不知道Normalizr,我沿着同样的路线建造了一些东西.relational-json接受一个模式,并返回一个基于表的接口(有点像数据库).relational-json的优点是您的数据结构动态地引用数据的其他部分(实际上,您可以在任何方向上遍历数据,就像普通的JS对象一样).它不像Normalizr那样成熟,但我已经在生产中成功使用它几个月了.