问题标签 [redux-promise]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - redux-promise:未捕获的 TypeError:中间件不是函数
我正在构建一个带有反应的网页。我使用了 udemy 的教程,作者使用 redux promise 进行休息调用。它在课程中起作用。
在我自己的项目中,我设置了相同的所有内容,当我尝试使用 redux-promise 中间件创建商店时,在启动网站时出现以下错误:
错误出现在这里(根据控制台):
如果我使用另一个中间件,比如 redux-thunk,它就可以工作(好吧,除了我的休息调用,但那是另一回事了)。有什么建议为什么会发生此错误?
我正在运行的版本:
我的 index.tsx:
您是否需要更多信息(如减速器、操作等)?
调用此行时出现错误:
reactjs - 使用 Promise 中间件为 React-Redux 应用程序添加加载指示器
我是反应 redux 的新手。我想在用户按下搜索按钮时添加加载文本,并在数据返回或操作完成时关闭文本。在正常的异步函数中,我可以在回调之前和之后切换 isLoading 标志。
但是,在我的应用程序中,我正在调度一个返回“类型”和“有效负载”的操作,这是一个承诺。中间件 redux-promise 然后“自动”转换该承诺有效负载并将其发送到减速器。换句话说,中间件在幕后为 Promise 执行 .then 操作,并为我的 reducer 提供正确的数据。
在这种情况下,我不确定如何将加载文本添加到我的视图中,因为一旦我调用 this.props.getIdByName(this.state.value),我不知道数据何时返回。对我来说,合乎逻辑的地方是在 reducer 内,因为那是数据返回的时候。但是,我相信这将是一个坏方法,因为减速器不应该执行这样的任务?
在我的组件中,我的提交具有以下功能
在我的 actions/index.js 文件中,我有以下动作生成器
在我的 reducers/reducers.jsx 里面
在我的主 index.js 文件中,我使用以下中间件创建了商店
javascript - 为什么我要使用 Redux Promise Middleware 而不是 Redux Promise?
我使用过Redux Promise,但似乎Redux Promise Middleware具有更多功能,例如调度多个附加了“PENDING”或“FULFILLED”的操作。
为什么我要使用其中一个?
javascript - 测试:从 Promise 对象获取响应的有效负载
在我的React-redux
应用程序中,我的一位动作创建者returns
是这样的:
我正在尝试编写一个测试,我只是在外部调用动作创建者并模拟它的参数,因为它只是一个纯函数。
在我的应用程序中,中间件redux-promise
直接处理商店中的承诺到有效负载的转换,并将其传递给减速器。
问题是,payload
上面返回的对象是调用promise
返回的axios GET
。所以,在我调用它的测试文件中,我会得到一个promise
,但我需要得到它的真实有效载荷值,即promise
完成后的那个。
我该怎么做呢?
javascript - 如何在使用 redux-promise 和 axios 的项目中为异步操作编写测试?
我的团队最近开始研究一个使用redux-promise的项目。每个动作中的有效负载是一个 axios 调用,如下所示:
Redux-promise 负责分派“具有已解决的承诺值的操作副本”(他们的话)。reducer 期望的是数据,而不是承诺:
该应用程序按预期工作,但编写测试一直是一个挑战。在这种环境中编写测试的最佳实践是什么?我想为动作创建者和减速器编写测试。
redux - 使用 React-Router 4 和 Redux-Promise 重定向用户
我有一个简单的用例,在 React-Router 4 和 Redux 环境中似乎很难实现。
当用户登录时,会触发一个 redux 承诺操作,该操作会返回一个 API 令牌、到期日期和一些其他信息。何时以及如果实现了承诺,我将希望将用户重定向到另一个页面。
我无法弄清楚如何使用上述架构以编程方式重定向用户。想在Action.js里面做,但是感觉只能在Reducers.js里面做。即使我不确定如何开始。
到目前为止我发现的最好的方法是在我的视图中有一个 Redirect 组件,并让 Promise 将loggedIn 状态设置为true,如果loggedIn 道具在视图上为true,它将返回重定向道具,然后重定向用户到所需的页面。不知何故,对于一个简单的用例来说,这感觉像是很多额外的代码。
任何意见将是有益的。谢谢你。
动作.js:
减速器.js
登录视图.js
问候,埃米尔
javascript - Reducer 在使用 redux-promise 和 axios 时返回 undefined
当我在承诺解决后尝试调用回调时遇到了这个问题(使用.then)事实证明,这给了我的 const请求某种不同的承诺,reducer 返回为未定义:
行动:
减速器:
如您所见,我将 axios 获取的 API 中的数据传递给我的 reducer。在此之后,我设置了状态,我需要调用“actions”中的回调(它会在组件内创建另一个动作调用)。不幸的是,我收到错误,即减速器const data = action.payload.data未定义。
当我不使用此回调时,一切正常,但情况是我需要仅在此减速器返回新状态后才调用该回调。
reactjs - 减速器没有被触发(redux-promise with axios)
我正在尝试使用 axios 进行 api 调用并将其结果传递给减速器。尽管触发了动作,但减速器没有。我不明白为什么。
这是在安装之前应该进行 api 调用的组件
这是我的行动
这是我的减速机
结果,我看到来自 console.log 的“动作触发”,而 null 来自组件中的 console.log,并且没有来自 reducer 的 console.log,所以它没有被触发,我的组件中没有要呈现的数据. 尽管我发出请求并从服务器获得带有数据的响应,但它并没有发送到减速器。(此外,案例 FETCH_POSTS 工作正常,我可以呈现帖子列表,但不是特定的)。
“axios”:“^0.17.0”“redux-promise”:“^0.5.3”
redux - Redux Promise 和 Redux Promise Middleware 的意义何在?
我搜索了高低,但找不到明确的答案。
我已经设法绕开 Redux 的机制,但是当我谈到 API 调用和异步操作创建者时,我被 Promises 上下文中的中间件所困。
你能帮我把乱七八糟的东西弄好吗?
难题的相互矛盾的部分让我头疼:
YT 教程之一说,原生 Redux 调度方法不支持从动作创建者返回的承诺——因此需要 Redux Promise 库(我知道该项目现在可能已经死了,延续是 Redux Promise 中间件)。
Dan 在“ redux-thunk 和 redux-promise 有什么区别? ”中说,即使没有中间件,我也可以使用 Promise——只需在动作创建器中管理它们。
在其他答案中,我发现了使用 thunk 的示例,其中动作创建者返回了一个......承诺(后来在调用者/调度(myActionCreator(params).then(...)中处理) /所以一个承诺可以由一个返回thunk没有任何 redux-promise 库..?
在“ redux-thunk 和 redux-promise 之间有什么区别? ”中,接受的答案是 Redux Thunk 返回函数,而 Redux Promise 返回 promises.. 到底是什么?
总结一下:使用 Redux Promise 或 Redux Promise 中间件有什么意义?为什么 Redux 本身不支持 Promise?
更新:
我刚刚意识到,在上面的第 3 点中,我忽略了then()
被附加到dispatch
而不包含在dispatch()
args 中。