我可以在React和Redux中发送一个AJAX调用,而不需要操作创建者和还原器吗

Can I send an AJAX call in React and Redux without action creators and reducers?

本文关键字:调用 AJAX 不需要 创建者 还原 一个 操作 Redux React 我可以      更新时间:2024-06-28

我有一些ajax请求没有直接操纵我的应用程序状态。在react/redux应用程序中,是否有必要(或者有任何好处)为这些ajax请求调度一个操作,而不是直接在组件中发送ajax请求?

为了简化我的场景,我在redux状态上基本上有一个对象列表。我正在使用一个表单将一个新对象发布到数据库,成功发布后,我将重定向到列表页面,在那里发送GET请求,获取列表并更新状态。

发布新对象的AJAX调用并没有直接操纵我的状态。

与我合作的团队正在经历完整的3步redux-async步骤例如:'FETCH_REQUESTED''FETCH_SUCCESS''FETCH_FAIL'以及所有AJAX请求的相应的reducer,添加更多的reducers是一个很大的麻烦,而且reducers似乎没有意义。

您绝对可以直接从组件发送AJAX调用!

Redux是一种使共享状态全局可用于多个组件的工具,并以可预测的方式进行更改。在任何情况下,如果你觉得这没有必要,就不要这样做。

当不同的组件发出相同的API请求,然后以类似的方式更改状态时,在操作创建者中保留AJAX调用是很方便的。如果您希望避免在已经有一些缓存数据可用的情况下发出请求,并且希望将这些检查放在一个地方,而不是分散在组件中,那么这也很方便。

也就是说,Redux只关心全局状态是如何更新的,如果你只需要从某个组件发出AJAX请求,除非你觉得方便,否则你不必为它编写动作创建者或减少器。

一般来说,当您有许多复杂的组件时,您可能会考虑将代码重构为;而不是每个组件都应该从什么开始。你可以只使用你需要的部分(例如,只使用同步的东西),甚至在某些情况下完全避免使用(例如,可折叠面板不必将其状态存储在商店中)。只有当你了解它在特定情况下给你带来的具体好处时才使用它,而不是"以防万一"或因为它很受欢迎。

另请参阅我对"如何在超时的情况下调度Redux操作?"的回答

为了解决您的具体示例,如果您使用Redux给您的好处,您可能需要使用Redux:也许您可以调度一个操作来乐观地更新表单,并立即显示新列表,并在可用时将其与提取的列表合并,以便即时显示交互这是异步操作创建者的用例。如果你不考虑这种用户体验的复杂性,我不确定Redux是否有必要。

尝试使用以下链接

https://github.com/sskyy/redux-task

它可以帮助您管理AJAX请求状态,而不需要那些冗长的操作和减少程序。