React + Redux 应用程序:通过 Redux 操作调用 API 与直接调用 API

React + Redux App: Calling API through a Redux action Vs Calling an API directly

我正在开发 React+Redux 应用程序。我通过 Redux 操作调用 APIs 并将响应数据存储在 Redux 状态中。但有一种情况,我不必将 API 响应数据存储在 Redux 存储中。

So the question is, Is there any valid reason to call the APIs through Redux actions or Should I call the APIs directly since I'm not storing the response data in Redux store?

为了统一起见,你应该始终遵循 redux 方式,即使所有的响应都没有存储在 Redux 中。如果您没有使用来自 API 呼叫的响应,这也是一个问题,您为什么要拨打电话。这个参数是counter-intuitive。如果您以某种方式使用响应,最好使用 Redux 方式。建议始终存储对 Redux 调用的响应并使用它,我确定您正在调用 API 来对 UI.

执行一些操作

这取决于您要拨打的电话类型,以及与谁有关。
以下是几个案例:

  • 这是 one-way 跟踪某事的电话吗?。您可以触发一个在 middleware 中被拾取的动作。这是发送分析的好案例。 这不必存储在 Redux 的商店中。

  • 这是应用程序的其他部分需要此数据的调用吗?那么这是在 Redux Store 中进行更新的一个很好的用例,因此其他组件在阅读本文并使用道具来决定渲染什么等

  • 这是一个只涉及一个组件或孤立部分的调用吗?您可以在 componentDidMount 中的组件内部进行此调用,因为这与其他人无关

或者看看 Sagas,他们观察所有被分派的动作,并以干净的方式决定如何处理它们。

接受的答案很好地解释了可以从 API 发起呼叫的场景。为了更好的用户体验,我们总是显示一些 spinnerbusy sign 来通知用户请求正在发出但尚未完成。 API response 可能不会改变状态,但为了让用户知道某些任务正在后台进行,我们通常会更新 store(对于全局访问)或 state(对于组件级访问),其值类似于 isFetching 或任何有意义的值。

所以,这取决于开发者,he/she 是想显示一些 busy 标志还是默默地执行 API 请求。此外,如果他们想显示 busy 标志,他们应该决定应用程序的哪一部分应该知道 API 调用。如果仅限于组件级别,则无需在actions中进行调用,否则,对于全局级别,是的,它应该在action.