【问题标题】:Using React hooks with redux [duplicate]将 React 钩子与 redux 一起使用 [重复]
【发布时间】:2021-02-15 04:44:36
【问题描述】:

如果我在 Redux 的 reducer 中有一个状态,我应该在函数组件中有一个“本地”状态吗?或者我应该只使用减速器的状态? 更清楚...如果我使用 Redux,我应该使用像 (useState) 这样的 React 钩子吗?

【问题讨论】:

  • 所以当我需要一个用于多个组件的状态时,我应该在减速器中写入这个状态,并且只用于一个组件的状态应该写入不在减速器中的那个组件?
  • 最后的说法是正确的。第一个陈述,并非总是如此。组件之间传递数据的方式还有很多(比如HOC,props传播)。

标签: reactjs redux react-hooks


【解决方案1】:

对此没有“正确”的答案。一些用户更喜欢将每一条数据都保存在 Redux 中,以始终维护其应用程序的完全可序列化和受控版本。其他人更喜欢在组件的内部状态中保留非关键或 UI 状态,例如“此下拉列表当前是否打开”。

使用本地组件状态很好。作为开发人员,您的工作是确定构成您的应用程序的状态类型以及每个状态应该存在的位置。找到适合您的平衡点,并坚持下去。

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

  • 应用程序的其他部分是否关心这些数据?
  • 您是否需要能够基于此创建进一步的派生数据 原始数据?
  • 是否使用相同的数据来驱动多个组件?
  • 能够将此状态恢复到给定状态是否对您有价值 时间点(即时间旅行调试)?
  • 您是否要缓存数据(即,使用状态中的内容,如果它是 已经在那里而不是重新请求它)?
  • 您希望在热重载 UI 时保持此数据一致吗 组件(交换时可能会丢失其内部状态)?

参考: https://redux.js.org/faq/organizing-state#do-i-have-to-put-all-my-state-into-redux-should-i-ever-use-reacts-setstate

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • @рüффп 感谢您的反馈。编辑以包括基本部分。
猜你喜欢
  • 2020-11-19
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 2017-12-09
  • 2018-12-05
  • 2018-06-10
  • 1970-01-01
相关资源
最近更新 更多