使用 get API 调用反应全局状态/道具(没有 Redux)
Posted
技术标签:
【中文标题】使用 get API 调用反应全局状态/道具(没有 Redux)【英文标题】:React global state/props with get API calls (without 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 的唯一用例,所以看起来有点矫枉过正 【参考方案1】:应用程序不使用 Redux,因此这不是保存全局状态的选项
使用为多个 React 组件检索数据并在它们之间共享/操作数据似乎需要使用 flux-data stream,而 redux
是它的最佳实现。此外,由于 API 调用始终是异步的,只有 redux
是不够的 - 您还应该使用流程管理器,例如 redux-saga
,这是建议任务的事实标准。
如果你不喜欢redux
并且想使用自定义解决方案(这很奇怪),只需编写一个 Provider 和简单的流程管理器。 Provider 应该存储共享状态并通过Context
机制在组件之间分发。简单的流程管理器应该是该全生命周期组件中的中间件功能,并在队列中获取 API 调用的结果。
(但结果是你将重新发明类似https://github.com/freeman-lab/minidux 的东西)
无论如何,不管你是否使用redux
,每个 React 组件,除了一个 - Page
或 Provider
- 应该是没有自己状态的功能组件。在另一种情况下,使用React
的好处将会丢失。
【讨论】:
以上是关于使用 get API 调用反应全局状态/道具(没有 Redux)的主要内容,如果未能解决你的问题,请参考以下文章