是否应将应用程序状态存储在本地状态或Redux Store中

时间:2017-03-06 08:10:38

标签: reactjs redux

我与Redux合作已近一个月了。我的问题是,我将所有应用数据都放在redux store中,但是我是否应该将切换状态设置为帮助我在redux状态下更改我的用户界面,或者我应该在每个状态下管理只做一页

this.setState({ showActiveForm : false })

5 个答案:

答案 0 :(得分:8)

对此没有正确或错误的答案。为了帮助您做出决定,以下是一些常见的经验法则,直接来自redux documentation

  • 应用程序的其他部分是否关心此数据?
  • 您是否需要能够根据此原始数据创建更多衍生数据?
  • 是否使用相同的数据来驱动多个组件?
  • 能否将此状态恢复到给定状态对您是否有价值 时间点(即时间旅行调试)?
  • 您是否要缓存数据(例如,如果已经存在,请使用状态,而不是重新请求数据)?

将大部分UI状态保留在redux中的另一个好处是,您可以编写更多无状态功能组件,并在未来版本的React中使用performance optimisations they will bring

  

此模式旨在鼓励创建应包含大部分应用的简单组件。将来,我们还可以通过避免不必要的检查和内存分配,对这些组件进行性能优化。

答案 1 :(得分:6)

目前的最佳做法是使用本地状态来处理user interface (UI)州的状态,而不是data

您的案例就是上述的完美范例。因此管理组件隐藏和显示的状态必须在本地状态本身而不是redux store

您可以存储在本地状态的另一个UI数据示例是选项列表中当前选定的选项卡。

考虑何时使用local state的好方法是考虑您存储的值是否会被其他组件使用。如果某个值仅针对单个组件,则可以将该值保存在local state.

进一步详述

Redux对于触发您需要在多个组件或多个路径上访问的事件也很有用。这方面的一个例子是登录模式,可以通过应用程序中的多个按钮触发。您可以有条件地在应用程序的顶层渲染它,并使用Redux操作通过更改商店中的值来触发它,而不是有条件地在十几个地方渲染模态。

答案 2 :(得分:3)

通常,经验法则是您使用redux store来管理应用程序中的数据,即存储从服务器获取的项目以及用于ui行为的本地react state,例如在您的案例中切换。但它并不是一个严格的规则,例如,如果您需要从多个地方切换某些内容,那么redux更容易使用

答案 3 :(得分:3)

使用react redux时我考虑的3点

1.在本地状态下保持UI状态和暂时数据(例如表单输入)。

2.保持您要在Redux商店中的组件之间共享的数据。

3.从服务器获取的数据应该转到redux store。

答案 4 :(得分:2)

这取决于组件的组织方式。如果跨多个组件使用切换状态,那么我更喜欢通过redux store管理状态。 如果状态是该组件的本地状态,并且如果它未在其他任何地方使用,那么最好的事情就是管理组件中的状态。因此,该组件将是自包含的。