最佳答案
备注:我已经阅读了Redux (Baobab)的文档,并且我已经做了相当一部分的google &测试。
为什么强烈建议Redux应用只有一个商店?
我理解单店设置与多店设置的利弊(在这个问题上有很多关于SO的问答)。
在我看来,这种架构决策应该由应用程序开发人员根据他们的项目需求做出。那么,为什么强烈建议Redux使用它,几乎到了听起来强制的地步(尽管没有什么能阻止我们多开商店)?
编辑:转换为单店后的反馈
在与redux一起工作了几个月之后,我可以说,这种单一的商店结构是一种纯粹的乐趣。
以下几点可能有助于其他人理解为什么在许多用例中,单店vs多店是一个没有意义的问题:
几点建议
构建redux存储的真正挑战是决定如何结构它。首先,因为未来结构的改变是一个主要的痛苦。其次,因为它在很大程度上决定了你将如何使用,以及如何查询你的应用数据。关于如何构建商店,有很多建议。在我们的案例中,我们发现以下是最理想的:
{
apis: { // data from various services
api1: {},
api2: {},
...
},
components: {} // UI state data for each widget, component, you name it
session: {} // session-specific information
}
希望这些反馈能帮助到其他人。
对于那些一直想知道如何“轻松”管理单一的存储的人来说,它很快就会变得复杂。有一种工具可以帮助隔离你的商店的结构依赖/逻辑。
有Normalizr,它基于模式规范化你的数据。然后,它提供了一个接口来处理数据并通过id
获取数据的其他部分,很像Dictionary。
当时我还不知道Normalizr,所以我按照同样的思路构建了一些东西。relational-json接受模式,并返回一个基于表的接口(有点像数据库)。relational-json的优点是你的数据结构动态引用数据的其他部分(本质上,你可以遍历你的数据在任何方向,就像普通的JS对象)。它不像Normalizr那样成熟,但几个月来我一直在生产环境中成功地使用它。