【问题标题】:React global state/props with get API calls (without Redux)使用 get API 调用反应全局状态/道具(没有 Redux)
【发布时间】:2018-05-08 03:11:42
【问题描述】:

我有一个运行多个 API 调用的 React 组件。在初始加载时,会运行默认 API 调用。

从默认的 API 调用中,我需要保存状态,比如说从一个名为 since_launch 的属性。在组件上运行后续 API 调用时,since_launch 状态会丢失,因为它在后续 API 调用中不可用。我需要保存 since_launch 状态,以便我可以使用它来确定其余 API 调用的逻辑。

该应用程序不使用 Redux,因此这不是保存全局状态的选项。作为一种解决方法,我使用本地存储在初始加载时保存了 since_launch,但这感觉不对。任何想法都将不胜感激或澄清我想要实现的目标根本不可能。

【问题讨论】:

  • 您是否更新了每个不同 API 调用的整个状态?
  • 是的,使用 Recompose 在每次调用时通过 props 更新整个状态
  • 你为什么要这样做?使用它对您有什么好处吗?
  • 为什么不使用 redux?
  • 因为它是一个相对简单的应用程序,这将是使用 Redux 的唯一用例,所以看起来有点矫枉过正

标签: reactjs state global


【解决方案1】:

应用程序不使用 Redux,因此这不是保存全局状态的选项

使用为多个 React 组件检索数据并在它们之间共享/操作数据似乎需要使用 flux-data stream,而 redux 是它的最佳实现。此外,由于 API 调用始终是异步的,只有 redux 是不够的 - 您还应该使用流程管理器,例如 redux-saga,这是建议任务的事实标准。

如果你不喜欢redux 并且想使用自定义解决方案(这很奇怪),只需编写一个 Provider 和简单的流程管理器。 Provider 应该存储共享状态并通过Context 机制在组件之间分发。简单的流程管理器应该是该全生命周期组件中的中间件功能,并在队列中获取 API 调用的结果。
(但结果是你将重新发明类似https://github.com/freeman-lab/minidux 的东西)

无论如何,不​​管你是否使用redux,每个 React 组件,除了一个 - PageProvider - 应该是没有自己状态的功能组件。在另一种情况下,使用React 的好处将会丢失。

【讨论】:

    猜你喜欢
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2021-06-18
    • 1970-01-01
    相关资源
    最近更新 更多