为不直接修改状态的 API 调用创建 Redux 操作

Creating Redux actions for API calls that don't modify the state directly

我们正在开发一个使用 Redux 来管理状态的 React 应用程序。总的来说,Redux 很好地为我们服务,但在应用程序的一部分,我们正在使用 WebSockets 更新我们的应用程序状态,以允许所有连接的用户拥有最新版本的数据。

看起来像这样:https://i.stack.imgur.com/uNAsk.png

在常规的 Redux 应用程序中,我们将有 3 个操作:ACTION_LOADING、ACTION_SUCCESS 和 ACTION_FAILURE 来处理 HTTP 请求。在这种情况下,状态会在从 WebSocket 接收到新数据后自动更新。

使用 Redux 操作 (thunk) 将此数据 post 发送到服务器是否正确,即使它不修改状态,还是在这些情况下不使用 Redux 调用服务更好?

如果我们创建操作,您会推荐什么模式?

谢谢。

出于以下几个原因,我建议将其包装在 thunk 中:

  1. 发起一个不会最终改变状态(无论出于何种原因)的动作并没有什么致命的。
  2. 即使您在成功的情况下没有做任何事情 POST(因为所有操作稍后都会通过来自服务器的消息进行),您仍然可能需要调度操作以防万一POST 由于某种原因失败。
  3. 它允许您的组件使用一种一致的机制(动作分派),而不是有时一种方式,有时另一种方式。