【问题标题】:When I store data in Redux and when not?我什么时候在 Redux 中存储数据,什么时候不?
【发布时间】:2021-11-23 22:23:15
【问题描述】:

我正在使用 React 应用程序,目前正在使用一项功能。主要任务是通过从 API 获取数据来显示一些图表。这些图表将显示过去 30 分钟的数据。

我有问题,

  1. 在这种情况下,是否有必要将这些数据存储在 Redux 的状态中,尽管它可以很容易地在组件处处理?每次刷新或请求时,我都会获得新数据(日志基础数据)。
  2. 我们什么时候下定决心将数据存储在状态中,什么时候不?

【问题讨论】:

  • 我推荐useState() 用于范围为单个组件的非复杂数据。 Redux 将用于组件共享的数据或多个组件依赖于相同数据的情况。对于组件状态中的图表数据对象(或任何多级对象)要记住的一件事是使用扩展运算符设置状态,因为设置状态进行浅比较。

标签: reactjs redux


【解决方案1】:

redux store 是一个单例,因此是一个单一的事实来源,可用于整个 react 应用程序中的所有组件。如果您的状态仅适用于一个反应组件,那么您不需要 redux 存储。一个 useReducer 反应钩子可以很好地在单个组件中重现 redux 模式。对单个组件坚持使用 useReducer 挂钩,并为由多个组件组成的应用程序使用 redux 库。

【讨论】:

    【解决方案2】:

    Redux 不是为特殊类型数据的特定角色而设计的。 您仍然可以将您的临时(30 分钟)数据存储到 redux 中,并使用它来让您感觉与其他数据相同。

    但在这种情况下,您可能需要在 30 分钟后重置数据或使缓存无效,请密切注意 react-queryRTK-query 为您更轻松地处理这些类型的操作。

    【讨论】:

      【解决方案3】:

      如果数据被用于许多状态,或者这些数据被许多组件使用,那么你应该使用 redux。你仍然可以不使用 redux,毕竟这取决于你。

      如果你有各种各样的组件和路由,那么 redux 将帮助你减少代码,并使代码更简单。 Redux 将为项目中的所有组件提供一个存储和访问数据,这比 context 或 props 技巧更好。

      此外,如果您想实现类似用户打开两个不同选项卡的效果。让它成为您网站的同一页面或两个不同页面,如果用户在页面 A 上执行了操作,并且您希望在另一个选项卡中打开的页面 A 或页面 B 应该获得该更新,那么 redux 可以让您实现这一点。在这种情况下,上下文和道具传递没有用。

      https://redux.js.org/faq/general#when-should-i-use-redux

      Redux 在以下情况下最有用:

      1. 您在应用程序的许多地方都需要大量应用程序状态
      2. 应用状态更新频繁
      3. 更新该状态的逻辑可能很复杂
      4. 该应用具有中型或大型代码库,可能有很多人参与
      5. 您需要了解该状态如何随着时间的推移而更新

      【讨论】:

        猜你喜欢
        • 2012-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-12
        • 2020-01-09
        相关资源
        最近更新 更多