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

Ade*_*ran 6 reactjs redux

我已经和我一起工作Redux了近一个月了.我的问题是,我将所有的应用程序数据放入其中redux store,但是我是否应该将切换状态设置为帮助我更改redux状态的UI,或者我应该只是在每个页面中进行本地管理

this.setState({ showActiveForm : false })

Pau*_*. B 8

对此没有正确或错误的答案.为了帮助您做出决定,以下是一些直接从redux文档中获取的常用经验法则:

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

将大部分UI状态保留在redux中的另一个好处是,您可以编写更多无状态功能组件,并利用它们将在未来版本的React中带来性能优化:

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

  • 作为Redux FAQ的作者,是的,这是正确答案:) (2认同)

Shu*_*tri 6

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

你的案例是上述的完美例子.因此,管理组件隐藏和显示的状态必须在本地状态本身而不是redux存储

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

考虑何时使用的一种好方法local state是考虑您存储的值是否将被另一个组件使用.如果某个值仅特定于单个组件,则可以安全地保留该值local state.

进一步阐述

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


Dmi*_*rov 3

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