2016-08-17 94 views
3

我一直在使用vanilla React,现在已经决定仔细研究Redux,为我正在做的一个新项目做准备。如何用redux处理组件状态?

起初我得到的印象是,全部用户活动应该导致行动,其中一个主要原因是您可以通过回放适当的行为来重建任何应用程序状态。

但是,这个问题是,你在商店里放了很多东西,实际上并不像应用程序状态。像“如果我专注于此输入,标签变成绿色”这样的东西似乎不适合在可能由数百个组件组成的应用程序的应用程序状态中表示状态。这些东西对于典型的待办事项教程是完全有意义的,但很难看到它在更复杂的情况下会如何变化。

然后我再读一些,发现一般意见,由创建者Dan Abramov支持,通常应该将本地组件状态与应用程序状态(存储)结合起来。 “看起来似乎最不尴尬”似乎是存储状态的经验法则。

一方面,这使得总的感觉:真正应用状态并且与多个组件相关的事物应该存储在商店中,而仅涉及单个组件的严格表示细节应该使用正常反应状态来处理。另一方面,这种方法让我感到困惑,因为我在开始时写了一些东西:在避免将状态分布在组件中并且可以重新创建状态的情况下,使用redux并不是很重要的一部分通过只存储的行动?

我希望有人能够解释这个问题,因为它一直困扰着我,而且我想我应该在尝试用redux构建一些复杂的东西之前得到一个坚实的意见。

回答

3

你把什么状态放在哪里完全取决于你。有时将所有内容放入Redux中可能有意义,有时将内容保存在组件中可能有意义。我最近看到了一些很好的经验法则:

  • 应用程序的其他部分是否关心这些数据?
  • 您是否需要从该数据中获取更多数据?
  • 是否使用相同的数据驱动多个组件/功能?
  • 对于能够将状态恢复到给定时间点(例如:时间行程/调试),您是否有价值?
  • 是否要缓存数据,即:如果它已经存在,而不是再次请求它,则将其从状态重新加载?

(感谢https://www.reddit.com/r/reactjs/comments/4w04to/when_using_redux_should_all_asynchronous_actions/d63u4o8该列表)

也看到关于这一主题的终极版FAQ:http://redux.js.org/docs/FAQ.html#organizing-state-only-redux-state

相关问题