问题标签 [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.

0 投票
3 回答
3822 浏览

reactjs - redux-promise:未捕获的 TypeError:中间件不是函数

我正在构建一个带有反应的网页。我使用了 udemy 的教程,作者使用 redux promise 进行休息调用。它在课程中起作用。

在我自己的项目中,我设置了相同的所有内容,当我尝试使用 redux-promise 中间件创建商店时,在启动网站时出现以下错误:

错误出现在这里(根据控制台):

如果我使用另一个中间件,比如 redux-thunk,它就可以工作(好吧,除了我的休息调用,但那是另一回事了)。有什么建议为什么会发生此错误?

我正在运行的版本:

我的 index.tsx:

您是否需要更多信息(如减速器、操作等)?

调用此行时出现错误:

0 投票
2 回答
2161 浏览

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 文件中,我使用以下中间件创建了商店

0 投票
3 回答
1124 浏览

reactjs - React Redux 添加额外字段以执行操作导致承诺返回不同

我想在我的动作生成器中添加一个 isLoading 标志并在我的减速器上重置它。最初没有标志,我的代码可以工作,动作如下所示

减速机看起来像

好结果

如您所见,该对象返回正常,我可以通过 action.payload.data.data.results 获取我的列表

请注意,我使用 redux Promise 作为我的中间件来处理 Promise。

一旦我将操作更改为以下并重新运行代码,我就会将我的有效负载(如下图所示)作为 Promise 而不是返回的对象

isLoading 添加

为什么只是简单地添加另一个变量导致这个问题?

0 投票
2 回答
8869 浏览

javascript - 为什么我要使用 Redux Promise Middleware 而不是 Redux Promise?

我使用过Redux Promise,但似乎Redux Promise Middleware具有更多功能,例如调度多个附加了“PENDING”或“FULFILLED”的操作。

为什么我要使用其中一个?

0 投票
0 回答
461 浏览

javascript - 测试:从 Promise 对象获取响应的有效负载

在我的React-redux应用程序中,我的一位动作创建者returns是这样的:

我正在尝试编写一个测试,我只是在外部调用动作创建者并模拟它的参数,因为它只是一个纯函数。

在我的应用程序中,中间件redux-promise直接处理商店中的承诺到有效负载的转换,并将其传递给减速器。

问题是,payload上面返回的对象是调用promise返回的axios GET。所以,在我调用它的测试文件中,我会得到一个promise,但我需要得到它的真实有效载荷值,即promise完成后的那个。

我该怎么做呢?

0 投票
1 回答
32 浏览

javascript - 如何在使用 redux-promise 和 axios 的项目中为异步操作编写测试?

我的团队最近开始研究一个使用redux-promise的项目。每个动作中的有效负载是一个 axios 调用,如下所示:

Redux-promise 负责分派“具有已解决的承诺值的操作副本”(他们的话)。reducer 期望的是数据,而不是承诺:

该应用程序按预期工作,但编写测试一直是一个挑战。在这种环境中编写测试的最佳实践是什么?我想为动作创建者和减速器编写测试。

0 投票
1 回答
918 浏览

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

问候,埃米尔

0 投票
2 回答
1375 浏览

javascript - Reducer 在使用 redux-promise 和 axios 时返回 undefined

当我在承诺解决后尝试调用回调时遇到了这个问题(使用.then)事实证明,这给了我的 const请求某种不同的承诺,reducer 返回为未定义:

行动:

减速器:

如您所见,我将 axios 获取的 API 中的数据传递给我的 reducer。在此之后,我设置了状态,我需要调用“actions”中的回调(它会在组件内创建另一个动作调用)。不幸的是,我收到错误,即减速器const data = action.payload.data未定义。

当我不使用此回调时,一切正常,但情况是我需要仅在此减速器返回新状态后才调用该回调。

0 投票
1 回答
242 浏览

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”

0 投票
3 回答
10348 浏览

redux - Redux Promise 和 Redux Promise Middleware 的意义何在?

我搜索了高低,但找不到明确的答案。

我已经设法绕开 Redux 的机制,但是当我谈到 API 调用和异步操作创建者时,我被 Promises 上下文中的中间件所困。

你能帮我把乱七八糟的东西弄好吗?

难题的相互矛盾的部分让我头疼:

  1. YT 教程之一说,原生 Redux 调度方法不支持从动作创建者返回的承诺——因此需要 Redux Promise 库(我知道该项目现在可能已经死了,延续是 Redux Promise 中间件)。

  2. Dan 在“ redux-thunk 和 redux-promise 有什么区别? ”中说,即使没有中间件,我也可以使用 Promise——只需在动作创建器中管理它们。

  3. 在其他答案中,我发现了使用 thunk 的示例,其中动作创建者返回了一个......承诺(后来在调用者/调度(myActionCreator(params).then(...)中处理) /所以一个承诺可以由一个返回thunk没有任何 redux-promise 库..?

  4. 在“ redux-thunk 和 redux-promise 之间有什么区别? ”中,接受的答案是 Redux Thunk 返回函数,而 Redux Promise 返回 promises.. 到底是什么?

总结一下:使用 Redux Promise 或 Redux Promise 中间件有什么意义?为什么 Redux 本身不支持 Promise?

更新:

我刚刚意识到,在上面的第 3 点中,我忽略了then()附加dispatch而不包含dispatch()args 中。