我们应该全球化反应应用程序的所有状态吗?

Shall we globalize all the states of a react application?

我对使用 redux 时的状态管理有疑问。 Redux 的主要目标是全球化组件的状态,以便 App 中的每个组件都可以读取和更新该状态。

我的问题是:当我们编写React/Redux应用程序时,我们应该使用哪种设计模式?定义 Redux 存储中的每个状态?还是在Redux store中只定义需要被其他组件读取的状态,其余的将封装在它们的相关组件中?

我想你答对了我的问题吗? :D

现在,组件的可重用性如何? redux 不会让组件无法重用吗?

&谢谢

对此没有“正确”答案。虽然有一些 Recommendations -

确定应将哪种数据放入 Redux 的一些常用经验法则:

  • 应用程序的其他部分是否关心此数据?
  • 您是否需要能够基于此原始数据创建进一步的派生数据?
  • 是否使用相同的数据来驱动多个组件?
  • 能够及时将此状态恢复到给定点(即时间旅行调试)对您有价值吗?
  • 你想缓存数据吗(即,如果它已经存在,则使用它的状态 - 而不是 re-requesting 它)?
  • 是否要在 hot-reloading UI 组件(交换时可能会丢失其内部状态)时保持此数据一致?

来自 Redux Github - Question: How to choose between Redux's store and React's state? #1287

dan_abramov - 将 React 用于临时状态,该状态对全局应用程序无关紧要,并且不会以复杂的方式发生变化。例如,某个 UI 元素中的切换,表单输入状态。将 Redux 用于全局重要或以复杂方式变异的状态。例如,缓存用户,或 post 草稿。

有时你会想要从 Redux 状态转移到 React 状态(当在 Redux 中存储一些东西变得尴尬时)或相反(当更多组件需要访问一些曾经是本地的状态时)。

经验法则是:做任何不那么尴尬的事

Cheatsheet -