问题标签 [redux-observable]

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

javascript - redux-observable - dispatch multiple redux actions in a single epic

I'm looking for way of dispatching multiple redux actions in a single Epic of redux-observable middleware.

Let's assume I have following Epic. Everytime when SEARCH event happens, Epic loads data from backend and dispatches RESULTS_LOADED action.

Now, let's assume that I need dispatch additional action when the searchPromise is resolved.

The simplest way of doing so seems to have a second epic that will listen to RESULTS_LOADED and dispatch the second action. Like so:

In this simple example it's quite easy. But when Epics grow, I tend to find myself having a lot of redux actions which sole purpose is to trigger other actions. Additionally, some of the rxjs code needs to be repeated. I find this a bit ugly.

So, my question: Is there a way to dispatch multiple redux actions in a single Epic?

0 投票
1 回答
8980 浏览

javascript - 从 redux-observable 史诗中访问状态

我正在使用 redux 来构建一个小的 fusball-manager。基本上它是一个页面,显示两个团队的分数和一些增加它们的按钮。我有类似{ type:"GOAL_UP", team:"red" }的动作,reducer 将更改状态中的相应值(分数)。

现在我想添加一个史诗,每当它遇到GOAL_UP检查两支球队中的一支是否赢得比赛时。如果一个团队的分数达到了 8,我希望它派出一个GAME_WON动作。我的问题是我必须访问状态才能知道每个团队的得分。我找不到从史诗中访问状态的方法。

访问状态是否超出了 redux-observable 的范围?如果是这样,你将如何解决这个问题?

我正在考虑将新分数作为GOAL_UP动作中的属性。像这样的东西{ type:"GOAL_UP", team:"red", newScore:8 }。但不知何故,这感觉不对。我还在 fusball-table 上有两个物理按钮,它们与 web 套接字连接,用于调度GOAL_UP动作。因为它们不是从我的用户界面触发的,所以它们不知道状态。

如果任一团队的得分为 8,我也可以考虑GAME_WON在我的 ui 组件的渲染函数中调度操作。但这感觉更错误:)

非常欢迎输入,谢谢

0 投票
1 回答
1484 浏览

javascript - 如何使用 Redux Observable 获取 EventSource

问题很简单,如何将 redux-observable 与 EventSource 一起使用?

使用 RxJs 就像:

0 投票
1 回答
778 浏览

rxjs - 存根抓住 redux-observable 史诗

我正在尝试测试 rxjs 观察者的 catch 函数,但 catch 从未运行。

测试.js

史诗请看https://redux-observable.js.org/

0 投票
1 回答
824 浏览

rxjs - 调度操作以响应取消

我从 redux-observable 文档中的取消配方开始,并希望对其进行一些扩展。

基本上我有一个场景,在触发取消后,使用takeUntil我想调度另一个动作来清理等。

到目前为止,这是我想出的:https ://jsbin.com/zemenu/195/edit?js,output

启动“获取用户信息”,然后点击取消。我希望它按以下顺序执行操作:
- USER/FETCH
- REQUEST/STARTED
- USER/CANCELLED
-REQUEST/CANCELLED

这以我现在设置的方式工作。但是,我必须依靠传入dispatch函数requestSequence,然后在finally. 仅使用可观察的运算符是否有更清洁的方法来做到这一点?因此,当USER.CANCELLED触发该操作时,某些最终操作将映射到requestSequence可观察对象内部。

Redux 记录器已启用,因此请检查控制台中的所有操作。

0 投票
1 回答
664 浏览

redux - RxJS Observables 以相反的顺序调用

我有以下代码可以调度 3 个动作:

  • 删除线失败
  • 显示确认消息
  • 等待 2s
  • 隐藏确认消息

由于某些原因,我能够使其工作的唯一方法是按相反的顺序,我做错了什么?

0 投票
1 回答
336 浏览

redux - Redux 传奇,rx-observable。使用 vanilla fetch 调用,为什么需要超过 thunk?

我一直在阅读有关 sagas、它们的意图和用法的信息。但是 - 我有两个问题我真的很想结束,然后是更多的意见问题。

  1. 当使用 Sagas 进行简单的 api 调用时,样板文件似乎非常多。如果我有 20 个 api 调用,那怎么比使用 thunk 少?另外,我一直听到“副作用”的想法——但我不确定它是如何发挥作用的。

我读过一些博客,它们使用了一种能够动态生成 Sagas 以减少样板文件的模式——但你不能用 thunk 来做到这一点吗?此外,任何例子都会很棒。

  1. 在处理非常简单的帖子或接听电话时,Sagas 是否仍然有用?

关于 redux-sags 与 redux-observables 的任何意见?

谢谢!

0 投票
2 回答
1080 浏览

reactjs - 使用 debounce 运算符测试 redux-observable Epic

具有以下 redux-observable 史诗:

和以下测试

store.getActions() 返回一个带有一个动作的数组 - “MOUSE_OVER”。而在消除去抖动时,它会返回另一个(和预期的)动作 - “OVER”。
我想在测试中存根/删除去抖动运算符。尝试使用 sinon 存根函数遵循此链接中的想法,但没有成功。
一些关于如何模拟 RxJS 运算符或特别是去抖动/节流的指南将不胜感激。
使用 React、Mocha、Chai、Enzyme……

谢谢

0 投票
2 回答
553 浏览

node.js - 从 redux-observable 中删除/断开史诗

我们在 Node 中运行集成测试,使用酶的 mount 和 jsdom 来渲染完整的应用程序。对于每个测试,我们创建一个新商店

不幸的是,为多个测试执行此操作我注意到每个史诗都被附加了多次,所以不是一个史诗表演一个,而是一个动作 10 是相同的!有没有办法可以在每次测试结束时运行清理,以便将史诗分离并且不再听?

我们正在使用 redux、redux-observable 和 enyzme+mocha 进行测试。谢谢!

0 投票
0 回答
490 浏览

javascript - 如何使用 redux-observable 处理多个负载

我在使用 redux 和 redux-observable 加载多个数据时遇到问题。

我需要通过 ajax 加载一个 Serie 对象,该对象包含一个问题列表,对于每个问题,我也需要通过 ajax 获取它的图像、音频和视频 blob。

至于现在我能够做到这一点,但是当我尝试在 React 中显示我的图像时,它不起作用。我猜它会在加载图像之前发送 Serie 对象,因此一旦检索到 blob,它就不会更新视图。事实上,如果我在两张地图之间的 Observable 中添加延迟,图像就会出现在视图中。

我是 redux-observable (RxJS) 的新手,即使它在我的情况下没有用,我也只是想让它工作。

这是我的动作文件。

减速机

以及调度事件的视图

我一直在寻找有关 redux 和 redux-observable 的多篇文章,但没有发现任何可以帮助我的文章。