应用程序设计:Redux状态多少?

时间:2017-01-26 03:01:12

标签: reactjs redux react-redux

我目前正致力于在React中构建一个小型应用程序(6个前端容器样式组件,15个后端数据库表)。

我正在玩导入Redux,我很难设计我的应用程序状态。似乎我需要将基于广泛的状态(例如用户会话)存储到Redux中,但是大部分其他状态我将从后端拉出并且不一定需要需要它始终是最新的100%。

基于所有" redux-todo"那里的风格示例,人们似乎会将所有存储在他们的Redux商店中(因为我觉得状态相对较小)。

但是,对于我的情况,我想知道Redux是否应该只是一个超级轻量级​​商店,只需要在整个应用程序中保留,这是一个Ember风格的服务'

我是否正确地考虑过这个问题?或者我应该在Redux中存储更多状态?

2 个答案:

答案 0 :(得分:2)

我一直在努力解决这个问题。它确实需要一些时间来习惯,但正如另一个答案所说,如果你正在使用Redux,那么惯用的方法是将所有内容存储在Redux存储中。一个例外(这些结果相当罕见)是仅限UI的数据,例如设置类等的可见性切换或下拉信息。也就是说,数据是短暂的,并且对其所在组件之外的任何内容没有影响。即便如此,您会发现使用动作和缩减器更容易管理某些仅限UI的项目,因为它们通常最终会触及其他项目。

编辑添加:正如下面的评论所述,官方Redux文档不对此问题采取立场。这就是为什么这么多人都在努力解决这些问题的原因之一 - 你如何构建你的React / Redux应用程序有很多自由。我的建议应该被理解为基于尝试不同方法的经验的建议。以下是我看到将州置入商店的三个主要原因:

  1. 通常情况下,我放入状态的东西最终需要在其他地方使用并通过道具获得它需要更多的工作,而不是我刚刚将数据放在Redux商店中。

  2. 此外,随着您的应用增长并变得更加复杂,重构您的应用以将组件拆分为更模块化的可重用部分是很常见的。如果您拥有在组件中两个位置使用的状态数据,那么您将无法轻松地将该组件拆分为更小的部分。

  3. 最后,可读性。很高兴能够浏览一下你的mapStateToProps电话,并确切了解每个组件接收或使用的道具。

  4. 问题在于,当项目的操作和影响很简单时,Redux并将所有内容放入商店可能会感觉到很多不必要的复杂性。如果是这种情况,我建议你至少在开始时考虑放弃Redux。重构会有很多工作,但它会帮助你欣赏Redux的亮点。另一方面,实际上你的应用可能并不真正需要它。

    回到原来的问题,是的,在我看来,你应该把更多的东西放在Redux商店里。一切都在那里,有一些非常狭窄的例外。特别是来自后端的数据应作为第一步进入商店,然后才能映射到使用它的组件中的道具。

答案 1 :(得分:0)

我们的想法是存储您的应用需要运行的任何状态。您的React组件一旦掌握了数据,就不会知道任何有关数据的信息。 React / Redux"方式"是他们得到的唯一方式来自你的Redux商店。

因此,如果您在应用加载中获取项目列表,则会在您的商店中显示。然后你的应用程序将它用于整个会话。如果有人离开并返回,或重新加载页面,它会再次获取,并再次在Redux中存储新副本。您可能不会创建任何操作来修改它,并且您可能不需要在短时间内再次获取它,但它应该存在的位置,以便您的组件可以从中获取内容。

如果你没有将它存放在Redux中你会把它放在哪里?您的组件将如何访问它?