为了简化我的场景,我基本上有一个redux状态的对象列表。我使用一个表单向数据库发布一个新对象,在成功发布后,我将重定向到列表页面,在那里发送GET请求,获取列表,并更新状态。
发布新对象的AJAX调用并不直接操作我的状态。
与我一起工作的团队正在经历完整的3步redux异步步骤,即:'fetch_requested'
、'fetch_success'
、'fetch_fail'
以及所有AJAX请求的相应精简器,添加更多精简器是一个很大的麻烦,而且精简器似乎没有意义。
您绝对可以直接从组件发送AJAX调用!
Redux是一种工具,用于使共享状态全局地对多个组件可用,并以可预测的方式进行更改。在任何情况下,如果你觉得没有必要这样做,就不要这样做。
当不同组件发出相同的API请求,然后以类似的方式更改状态时,将AJAX调用保存在action creators中非常方便。如果您希望避免在已经有一些可用的缓存数据时触发请求,并且希望将此类检查保存在单个位置而不是分散在各个组件中,那么这也很方便。
一般来说,当您有许多复杂的组件时,可以考虑将代码重构为Redux(和Flux);不是每个组件都应该用什么开始。您可以只使用它需要的部分(例如,只使用同步内容),甚至在某些情况下完全避免使用它(例如,可折叠面板不必将其状态存储在存储区中)。只有当你了解它在特定情况下给你带来的具体好处时才使用它,不要“以防万一”或因为它受欢迎而使用它。
另请参阅我对“如何使用超时分派Redux操作?”的回答。
为了解决您的具体示例,如果您使用Redux给您的好处,那么您可能希望为此使用Redux:可能您调度一个操作以乐观地更新表单并立即显示新列表,并在它可用时将它与获取的列表合并,以便交互立即出现。这是异步操作创建者的用例。如果您不考虑这种UX复杂性,我不确定Redux是否有必要。
我读到Redux Thunk是管理异步操作/请求的可靠方法。通过其他操作来调度操作没有什么太大的关系。 调度同步动作怎么样?我不确定thunk方法的性能问题,但我是否可以在其他操作创建者内部调度操作而不在内部定义函数? 在我看来,使用redux thunk对于这种需要是不必要的。
问题内容: 我已经在减速器中添加了一些逻辑,我认为应该将其添加到Action中并传递下去? 最好的做法是将此类内容放入动作或减速器中吗? 这里的工作示例。 减速器代码: 问题答案: 减速器必须是纯净的。当前它不是纯净的。它调用依赖于哪个调用,因而不是纯粹的。 这种逻辑(无论是随机生成还是来自用户输入的“生成数据”)都应在动作创建者中使用。动作创建者并不一定要纯粹,并且可以放心使用。该动作创建者将返
我有一个逻辑问题,我是否应该对操作中的每个回调进行多个函数调用: 或者我可能想把这些调用转移到redux减速机中,然后从那里调用下一个函数? 第二种方法在我看来像是反模式,会产生意大利面条式的代码...也许我错了?
问题内容: 在我的React应用程序中,我有一个参数数组(例如一些ID),这些参数应该用作ajax调用队列的参数。问题是该数组可能包含1000多个项目,如果我仅使用forEach循环递归地进行ajax调用,则浏览器页面最终会在每个请求得到解决之前停止响应。 是否有一种技术/库可以允许以异步方式一次发送5个请求,例如,一次异步发送ajax请求,并且仅在这些请求完成后才继续下一个5? 后续问题: 反应
在过去的几天里,我一直在玩Docker-Compose,看看它是否会简化我的Docker容器和网络构建过程。 我对此非常满意,但是当我想创建一些尚未被任何“服务”使用的“网络”时,遇到了一个问题。 我想要这种行为的原因是让Docker编写文件来创建我的本地结构的“私有”网络和“公共”网络。我的每个项目都有一个单独的Docker,利用已经创建的“外部”网络。 我注意到我能够指定一个虚拟容器来初始化网
问题内容: 我正在研究过去1年的反应。我们遵循的约定是在数据到达后进行API调用,获取数据和setState。这将确保组件已安装并且设置状态将导致重新渲染该组件,但我想知道为什么我们不能在或中设置setState。 官方文件说: 在挂载发生之前立即调用componentWillMount()。在render()之前调用它,因此在此方法中设置状态不会触发重新渲染。避免在此方法中引入任何副作用或订阅。
我试图创建一个网络商店购物车组件的减速器,但我遇到了这个错误: “操作”未定义 我的代码如下: 这就是cartActions的样子。似乎以前的代码必须以某种方式使用它,但是如何使用呢?从“axios”导入axios;从“…”导入{CART\u ADD\u ITEM}/常数/常数'; 导出常量addToCart=(id,数量)= 这有什么问题?
我有一些逻辑,我已经把它放进减速机里了,我在想,应该把它放进行动中,然后传下去? 把这类东西放在动作或减速器中是最佳实践吗? 这里的工作示例。 减速器代码: