我可以在没有动作创建者和减少者的情况下在React和Redux中发送AJAX调用吗?

jma*_*rje 17 javascript ajax reactjs redux

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

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

发布新对象的AJAX调用并不直接操纵我的状态.

我与通过完整的3步Redux的异步去工作队步骤例如:'FETCH_REQUESTED','FETCH_SUCCESS','FETCH_FAIL'连同所有的AJAX请求相应的减速,这是一个很大的麻烦,以增加更多的,似乎在减速不会是有道理的.

Dan*_*mov 35

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

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

当不同的组件发出相同的API请求然后以类似的方式更改状态时,在动作创建器中保持AJAX调用是很方便的.如果您希望在已有一些缓存数据可用时避免触发请求,并且您希望将这些检查保留在一个位置而不是分散在组件中,这也很方便.

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

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

另请参阅我对"如何使用超时调度Redux操作?"的回答.

为了解决您的具体示例,如果您使用Redux为您提供的好处,您可能希望使用Redux:您可能会调度一个操作来乐观地更新表单并立即显示新列表,并将其与获取的列表合并是可用的,以便交互瞬间出现.是异步动作创建者的用例.如果你不是在考虑这种UX复杂性,我不确定Redux是否必要.