问题标签 [redux-promise-middleware]

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 投票
2 回答
2768 浏览

javascript - 在 Redux 中,将数据发布到服务器的最佳方式是什么?

我想将数据发布到服务器.. 我的操作是这样的:

我有三种方式。第一种方法是导入存储并在我的操作中调用 getState 方法,第二种方法是在减速器中调度操作,最后一种方法是将我的操作中的所有数据作为参数传递。哪一个是正确的?我读了这个问题,我担心反模式。

0 投票
2 回答
8869 浏览

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

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

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

0 投票
1 回答
143 浏览

redux - 使用 Redux Promise 中间件时如何保持我的 reducer 纯净?

我正在使用Redux Promise 中间件,我的动作创建者返回一个带有承诺的动作。

现在,在 reducer 中,我收到了已解决的承诺数据,我必须“提供”新状态。我还必须对这些数据做一些不“纯粹”的事情,例如,将其存储在本地存储中。

我应该如何处理这种情况并仍然保持减速器纯净?该数据是在中间件中获得的,我第一次获得它是在减速器中。

我知道我可以在我的动作创建者中处理承诺并在分派动作之前访问数据,但是还有其他更好的方法吗?

0 投票
1 回答
557 浏览

reactjs - 使用 axios 链接 redux 有效负载

我正在为 WordPress 后端 (REST) 使用 React 和 Redux(带有 promise 中间件和 thunk)构建前端。

现在我正在使用 Redux 进行简单的调度以获取页面数据,例如:

现在我想做一个更复杂的调用。我想从 WordPress 中获取所有标签并返回这些标签。然后我获取所有特色标签。然后我获取所有具有特色标签的帖子。然后我获取所有具有特色标签的自定义帖子类型。

理想情况下,我的有效负载最终看起来像这样:

这就是我现在所拥有的,它 fetches 基本上会获取所有内容,但还没有连接和分派。

0 投票
0 回答
461 浏览

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

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

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

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

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

我该怎么做呢?

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 回答
1404 浏览

typescript - 在 typescript 中使用 redux-actions、redux-thunk 和 redux-promise-middleware

这里是 typescript + redux 生态系统的新手。

在 TypeScript 中使用 redux-actions、redux-thunk 和 redux-promise-middleware 时,如何将类型信息正确封装到异步操作中?

身份验证示例:

由于我使用的是 redux-promise-middleware,因此会自动分派actions LOGIN_PENDINGLOGIN_FULFILLED/ 。LOGIN_REJECTED我如何为这些创建类型,以便减速器可以找出它正在处理的操作对象?

由于 redux-actions 遵循 FSA,_FULFILLED所以应该有action.payload. _REJECTED应该有action.error

我将如何创建AuthAction类型?我猜它应该是每个单独动作类型的联合类型(可以是它们自己的联合类型)。redux-actions也为此提供ActionBaseAction类型。

0 投票
1 回答
7536 浏览

javascript - Typescript error "Property 'then' does not exist" when chaining promises with promise-middleware + thunk

I'm using redux-promise-middleware with redux-thunk in order to chain my promises:

The code above works but also generates a warning during compile time:

TS2339: Property 'then' does not exist on type '{ type: string; payload: Promise<{}>; }'

It sounds like I need to include Promise<...> somewhere as a type so typescript knows that then is in fact a property on the object that's returned by dispatcher() but I haven't been able to remove the error.

https://github.com/gaearon/redux-thunk/issues/103

Seems related but where I can specify the action type i.e. MY_ACTION?

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 中。

0 投票
1 回答
674 浏览

redux - 为什么 Redux Promise Middleware 没有为我的示例代码分派被拒绝的操作?

我使用 fetch-mock、redux-mock-store、promise-middleware 来测试我的应用程序的 redux 实现。我有以下代码:

问题是我用 retchMock 模拟的 404 调用总是最终被解析为 ACTION_1_FULFILLED。为什么会这样?我是否错误地嘲笑了电话?