我可以在React和Redux中发送一个AJAX调用,而不需要操作创建者和还原器吗
Can I send an AJAX call in React and Redux without action creators and reducers?
我有一些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请求状态,而不需要那些冗长的操作和减少程序。
- 阻止在select2单击时调用ajax
- 调用Ajax并返回响应
- Ajax:只在元素存在的情况下调用Ajax
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 调用Ajax内部的函数
- 无法获取属性'的值;拆分'在IE8中调用ajax之后
- 我们如何在Firefox中调用AJAX
- Rails:通过调用Ajax重定向
- Cookie 在 Spotify (Javascript) 中调用 ajax 后未保存
- 通过调用 Ajax 来设置 struts bean 值
- 无法从服务器中的 php 调用 Ajax 函数
- 如何在附加表行时调用 ajax
- 在facebook用户发送邀请请求后调用ajax调用
- 定期调用Ajax
- 调用Ajax生成的表单的值
- 无法调用ajax函数
- 在调用AJAX之后显示ng控制器的内容;作为“;作用
- CSS,Java脚本在php中调用ajax后无法正常工作
- 成功调用AJAX后,Toast Growl不会出现
- 如何在调用AJAX时记录或捕获信息和错误