问题标签 [redux-saga]
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.
javascript - Redux Sagas 中的 yield* 委托运算符
在Redux Sagas Beginner Tutorial中,我们被告知要像这样编写一个 watcher saga:
为什么我们yield*
在第 2 行使用委托操作符而不仅仅是yield
操作符?他们不会在这里做同样的事情吗?
javascript - 使用 redux-saga 进行异步 api 调用
我正在关注有关帮助程序的 redux-saga 文档,到目前为止,它看起来很简单,但是在执行 api 调用时我偶然发现了一个问题(您将看到指向此类示例的文档链接)
有一部分Api.fetchUser
没有解释,因此我不明白这是否是我们需要使用axios或superagent之类的库来处理的事情?或者是别的什么。并且是传奇效果之类call, put
的……等价物get, post
吗?如果是这样,他们为什么这样命名?本质上,我试图找出一种正确的方法来在 url 上对我的 api 执行简单的 post 调用example.com/sessions
并传递数据,例如{ email: 'email', password: 'password' }
redux - 我如何知道调用代码中的 redux-saga 函数何时完成
反应,redux,redux-saga
我派出一个行动,CREATE_REQUESTED
对商店说。Redux-saga 运行,并对服务器进行异步调用。在传奇完成后,即下一个CREATE_REQUESTED
我想从CREATE_REQUESTED
启动第一个的容器/组件中执行附加代码的块。
有没有办法做到这一点?如何?如果没有,我应该如何设计这个任务?
redux-saga - 如何在没有 redux 的情况下使用 redux saga?
我使用 redux-saga 的主要原因之一是它进行异步函数调用的可测试性。我的困境是,当我使用不属于我的 redux 存储的有状态对象进行编程时,使用 sagas 进行编程变得非常尴尬。是否有使用非纯数据对象和 redux-saga 的最佳实践?
假设我有在 API 中注册的回调函数,在这种情况下是 firebase,我需要保留这些回调函数,以便以后取消注册。我无法将这些回调函数存储在 redux 中,那么将其写成 saga 还有意义吗?
在一段代码中似乎有点奇怪,以便能够使用诸如 put、select 之类的东西,而在其他代码中我必须使用 store.dispatch。
例子:
javascript - 控制台中的 Javascript 生成器语法错误
使用生成器时遇到问题。我在控制台中收到以下错误:
./app/redux/sagas/tracking.saga.js 中的错误 模块构建失败:SyntaxError: C:/Workspace/teamable-frontend/app/redux/sagas/tracking.saga.js: Unexpected token (18:4)
这是package.json
:
和装载机webpack.config
:
以及使用生成器的功能:
我究竟做错了什么?
javascript - 如何构建生成器函数的代码/摩卡测试
我开始用react-redux构建一个 react 项目,它使用mocha作为测试框架。
为了处理异步操作,我最近决定尝试一下react-saga。React-saga 使用ES6-generator-functions。我发现这更容易测试,因为它为我省去了一些模拟函数的麻烦。
但是,我很难以产生我认为可读的输出的方式构建测试。在开发人员提供的教程中,他们使用磁带,这基本上允许每个断言产生自己的输出。我觉得这相当不错,因为我可以为 saga 中的每个步骤创建一个输出。
有没有办法用 mocha 实现类似的输出。创建多个“它”似乎不是一个选项,因为它需要它们以特定的顺序运行。
将所有步骤作为“它”的文本输入的方法似乎也不实用。我能想出的唯一解决方案是创建单独的 it's 并在生成器上调用 next 越来越多的次数并断言最后一个值,这也不太实用,尤其是在某些步骤获取数据的情况下。
由于我对 javascript 还很陌生,我可能会在这里错过一些明显的东西。有人能指出我正确的方向吗?
编辑 08/14:添加示例以进行说明:
让我们以教程中提供的示例为例:
用胶带他们像这样测试它
当我尝试用 chai 为 mocha 编写这个时,它看起来像这样:
虽然这对于几个步骤看起来没问题,但我宁愿不要失去在示例中输出我称之为“消息”1 到 3 的能力,因为如果在传奇中存在更多步骤,那么消息会变得很长。
所以我正在寻找的是类似下面的东西,如果我没记错的话,这是一个反模式,因为每个“它”不应该依赖于按顺序修改的全局状态。
所以我的问题是,是否有一种很好的方法可以做到这一点,并在理想情况下产生 3 行输出,每行都指示它是成功还是失败?
redux - 如何在不满足某个条件时在调用takeLatest api之前取消redux saga中的动作
我创建了一个事件处理程序,当用户单击提交按钮时表单被提交:
当电子邮件或密码以 redux 方式为空时,如何使其不运行 addLogin 调用?
在 jquery 方式中,我们有一个叫做 event.prevenDefault() 的东西,这里不运行 takeLatest API 调用的传奇方式是什么?
redux - Redux 传奇和 immutablejs
我使用 redux、redux-saga 和不可变 js 创建了一个基本的授权流程。
Redux 表单 (v6.0.0-rc.4) 允许表单创建不可变映射。我将这些值传递给 redux-saga,在那里我试图将这些值传递给我的登录函数。
问题 1:从概念上讲,何时是values.get('username')
访问不可变映射内数据的合适时间?在我的传奇中,在功能中?我是否应该等到最后一步才能提取值?
问题 2:假设我能够在正确的位置提取值,我不确定在 sagas 中应该如何处理 - 这是我的 loginFlow 传奇:
作为data
来自 redux-form 的不可变映射。但是,每当我控制台登录data
我的 sagas 时,它只会返回0
.
javascript - 如何测试使用来自已调度操作的数据的 Saga
我正在使用redux-saga并使用expect进行测试。根据(惊人的)React Boilerplate中给出的示例,测试从 Store 获取所需数据的 saga(使用选择器)是没有问题的。
但是,我的一些 sagas 依赖于已调度操作中包含的数据:
为了测试这一点,我正在导入 saga,然后调用它:
正因为如此,没有任何动作可以启动 saga,所以 的值id
总是为假的。
我的动作和减速器是分开测试的:当像这样以独立的方式测试 sagas 时,有没有一种简单的方法可以让它工作?