问题标签 [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.
ajax - 使用 fetch 而不是 ajax 与 redux-observable
redux-observable
是否可以使用isomorphic-fetch而不是Rx.DOM.ajax?
debugging - 如何调试 rxjs5?
在RxJS - 目标我读到他们的目标是更好的可调试性:
目标
提供比以前版本的 RxJS 更多的可调试调用堆栈
我刚开始使用redux-observable
它比较容易理解,redux-saga
因为我已经习惯了使用lodash
and的反应式风格ramda
(好吧,也许是 fp 风格;)。我很惊讶还不能调试它。这是真的吗?如果是这样,那么我redux-saga
可能要切换到 s 或坚持使用redux-thunk
.
根据杰伊菲尔普斯的回答进行编辑
通过调试我的意思是:“如何在浏览器中设置断点observable.map(...)
?” 有了lodash
我可以在浏览器中设置一个断点,它就停在_.map(...)
. 如何用redux-observable
(或rxjs
)做到这一点?我不想依赖绘制大理石图和console.log()
.
react-native - 如何为所有 redux-observable 史诗添加全局错误处理程序?
我使用 redux-observable 开发 React Native 应用程序。我有 10 多个史诗,所有结尾都是.catch(err => console.error(err))
为了显示 React Native “红框”(请参阅 https://facebook.github.io/react-native/docs/debugging.html#errors)以防万一内部出现错误史诗。
我如何定义一个全局错误处理程序,供所有史诗使用(它们稍后由combineEpics
函数组合)?
redux - 为什么在中间件内部处理 Observables - vs 调度组合 Observables 的输出?
当我看到所有这些鼓励你调度一个异步发出其他动作的动作的中间件时,我觉得我正在服用疯狂的药丸。我认为异步 CAN(也许应该?)在商店之前完成。
对我来说,Rx 的好处是你可以接收一个传入的动作流,将其中一些映射到其他动作的可观察对象,然后对整个结果进行平面映射以获得一系列有序的事件。然后,您可以通过将每个事件分派给它来将该结果流链接到存储中。
将异步放入操作中不仅会采用 Redux 的简单模型并使其复杂化,而且这意味着当您进行时间旅行调试时 - 您可能会触发新的 AJAX 请求(这可能会在您清理时重写您的历史记录?)。
我想我觉得将 RxJS 的强大功能放在商店前面对我来说很有意义,但我很困惑为什么将它放在商店旁边的库是有意义的。我同意 Observables 是 Epics 的一个很好的模型,但我想知道 Redux 是否正在被用来关心它不应该知道的事情。
背景:我看过这个视频https://www.youtube.com/watch?v=AslncyG8whg,学习 Rx 几年,Redux 半年。
redux-observable - redux-observable 未导出 createEpicMiddleware
我在 Ionic2 rc0 中使用 redux-observable 并得到以下错误,知道吗?
javascript - 为什么使用 Redux-Observable 而不是 Redux-Saga?
我用过Redux-Saga。到目前为止,用它编写的代码很容易推理,除了 JS 生成器函数不时让我头疼。据我了解,Redux-Observable可以实现类似的处理副作用但不使用生成器函数的工作。
然而,来自 Redux-Observable 的文档并没有提供很多关于为什么它优于 Redux-Saga 的意见。我想知道不使用生成器函数是否是使用 Redux-Observable 的唯一好处。使用 Redux-Observable 而不是 Redux-Saga 可能有什么缺点、问题或妥协?提前致谢。
reactjs - 在 react-router onEnter 钩子中懒惰地添加新的史诗是一种有效的做法吗?
将 redux-observable 与 react-router 一起使用时,在路由更改期间按照文档中的说明在 react-router 的 onEnter 挂钩中异步添加新史诗是否有意义?
./epics/index.js
...路线/SomePath/index.js
Rxjs 和 redux-observable 非常新。这似乎可行,但想知道: 1. 在这种情况下,每次我们导航到 /some-path 时,epic3 会再次添加到 rootEpic 吗?2. 如果我想控制台记录哪些史诗已添加到 rootEpic 中,我该怎么做?
编辑以回应@JayPhelps
我可以要求澄清几点吗?
registerEpic fn 效果很好。我一直在使用 .distinct() 运算符来解决重复的史诗注册问题,如下所示:
export const epic$ = new BehaviorSubject(combineEpics(epic1, epic2)).distinct()
这是处理惰性史诗注册的同样有效/好的方法吗?如果不是,您能解释一下原因吗?
- 我正在使用具有 require.ensure 和 ES6 导入的 create-react-app(它们是不同的导入方式,对吗?),基本上,我复制粘贴了react-router 的巨大应用程序示例,其中包含
require.ensure
代码,但无处不在否则,我在文件顶部使用 import 语句。
因此,在顶部导入史诗和 registerEpic fn 似乎可行,而将路径放在 require.ensure 第一个参数中似乎也可行。如果我使用 require.ensure AND import 语句,它会变得混乱吗?如果我使用 require.ensure 来加载路由需要的所有内容,这是否意味着我删除了该路由组件的嵌套(无路由)组件内的所有导入语句?
关于在 'getComponent' fn 中注册史诗以进行异步加载 - 我认为实际上需要在此处进行同步加载,以便在注册史诗之前不会渲染路由的组件。如果用户尝试在路线上做一些事情,比如获取一些详细信息或提交表单,需要注册史诗,而史诗尚未注册,会发生什么?
在 react-router module.export 声明之外还有其他地方适合懒惰地注册史诗吗?由于我项目中的许多路由不需要登录,因此登录并不总是会触发路由更改。但是,在用户登录后应该注册一堆史诗。目前,我通过在我的 authReducer 中设置一个令牌变量以一种非常愚蠢且可能错误的方式来做这件事,但它所做的只是调用一个函数注册新的史诗:
/li>
我想 loginEpic 将是注册史诗的更好地方,而不是 reducer。(我在 github 上找到了您的登录示例,因此它可能看起来很熟悉)。这是正确的,还是我完全偏离了基地?我知道 .concat() 是同步的,而且我知道 redux 是同步的——我不确定 registerEpics() 是否同步,但是使用 reducer 注册史诗似乎可以正常工作——这是否意味着 registerEpics 是同步的?还是仅仅意味着事情发展得如此之快以至于无关紧要?还是仅由于我对 import 语句以及 webpack 如何处理我必须研究更多的代码拆分存在一些基本的误解而起作用?
javascript - 在 redux-observable 中将史诗异步添加到中间件
我正在尝试评估 redux-observable。只是查看文档,我正在尝试进行异步史诗加载。我从文档中创建了一个 jsbin 的分支,它基本上试图添加 BehaviorSubject 东西的异步使用。
http://jsbin.com/bazoqemiqu/edit?html,js,输出
在那个“乒乓”示例中,我添加了一个“其他”动作,然后使用 BehaviorSubject.next(如文档中所述)添加该史诗。但是,当我运行该示例时,会发生 PING 动作被触发,然后是无穷无尽的“其他”动作流,但从来没有 PONG 动作。为了看到这一点,我添加了 reduxLogger。在开发工具控制台中查看它,因为 jsbin 控制台没有正确呈现它。
我的问题是我做错了什么?为什么 PONG 动作永远不会被调度?
node.js - 使用 fetch 和 redux observable 时调用堆栈大小超出
我正在使用 fetch ,如此处所示(使用 fetch 而不是 ajax 和 redux-observable)在服务器端使用节点进行 fetch。不幸的是,AjaxObservable 只能在浏览器中工作,所以我使用 isomorphic-fetch 在服务器上进行 fetch。
我的代码看起来像这样:
但是,当我在服务器(即canUseDOM == false
)上运行它时,我收到以下错误:
promise - 不发送任何新动作的 redux-observable 史诗
可能是我是一个菜鸟,还没有完全理解这些东西应该如何工作,但我有一个 redux-observable 的史诗,我想用它来创建一个承诺,它将调度一个动作并等待一个在解决之前采取不同的行动。我已经通过将动作映射到它来工作,'__IGNORE__'
但我真的不想这样做。有没有办法让一个史诗般的处理一个动作,但不传递任何其他东西?
这是我的代码: