请注意:我已经阅读了Redux的文档(Baobab也是如此),我在Googling和测试方面也做了相当的工作。
为什么这么强烈地建议一个Redux应用程序只有一个商店?
我理解单一商店设置和多个商店设置的优缺点(在这个主题上有很多问题)。
国际海事组织,这一架构决定属于应用程序开发人员根据他们的项目的需要。那么,为什么对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
}希望这些反馈能帮助到其他人。
编辑2-有用的存储工具
对于那些一直想知道如何“轻松”管理单一商店的人来说,这会很快变得复杂起来。有一些工具可以帮助隔离存储的结构依赖关系/逻辑。
有一个基于模式的诺马利兹来规范您的数据。然后,它提供一个接口来处理您的数据,并通过id获取数据的其他部分,就像字典一样。
当时我不知道Normalizr,我按照同样的思路建造了一些东西。关系-json接受一个模式,并返回一个基于表的接口(有点像数据库)。关系-json的优点是您的数据结构动态地引用了数据的其他部分(本质上,您可以像普通的JS对象一样,向任意方向遍历数据)。它没有Normalizr那么成熟,但我已经成功地在生产中使用了几个月。
发布于 2015-11-10 15:41:53
在某些情况下,您可能会使用多个存储(例如,如果您在更新数千个同时在屏幕上每秒多次出现的项目的列表时存在性能问题)。尽管如此,这是一个例外,在大多数应用程序中,你永远不需要超过一个单一的商店。
为什么我们要在文档里强调这个?因为大多数来自Flux背景的人将假设多个商店是使更新代码模块化的解决方案。然而,Redux有一个不同的解决方案:还原剂组成。。
在Redux中保持更新模块的方式是将多个还原器进一步拆分成一个还原器树。如果您不认识到这一点,并且在不完全了解还原剂组成的情况下选择多个商店,那么您将失去Redux单一商店体系结构的许多好处:
waitFor )。waitFor拐杖的原因之一。对于单一的商店,这并不是你首先看到的问题。发布于 2017-03-18 05:23:54
在一些大型企业应用程序中,有成百上千个精简器,将应用程序的不同区域看作完全不同的应用程序通常是有用的。在这些情况下(实际上是多个共享域名的应用程序),我使用多个商店。
例如,我倾向于将以下公共功能领域作为单独的应用程序来处理:
如果其中任何东西都是小的,就把它们作为主应用程序的一部分。如果它们变得非常大(就像一些企业帐户管理和分析工具所做的那样),那么将它们分开。
管理非常大的应用程序的最好方法是把它们当作许多小应用的组合。
如果你的应用程序少于50k LOC,你应该忽略这个建议,转而遵循Dan的建议。
如果您的应用程序超过100万LOC,您可能应该将迷你应用分开,即使您在单次回购中维护它们。
发布于 2018-08-01 22:03:48
此架构决策属于应用程序开发人员根据他们的项目需求做出的决定。
你生活在你自己的世界里。我正在与使用redux的人见面,因为它每天都很流行。你甚至无法想象有多少项目是在没有任何决策的情况下开始缩减的。我讨厌redux方法,但不得不使用它,因为其他开发人员什么也不知道。这只是一个由facebook膨胀的巨大泡沫。
让我们想象一下,您有几家redux商店。您将破坏单向数据流。你会立刻意识到你在商店之间有多少联系。你可能会受到这些关系的影响,比如与圆形防御部队的战斗等等。
单一的单向流动的不可变存储并不是每一种疾病的灵丹妙药。如果您不想维护项目架构,那么无论如何您都会受到影响。
https://stackoverflow.com/questions/33619775
复制相似问题