问题标签 [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.
reactjs - 我可以使用 redux-saga 的 es6 生成器作为 websockets 或事件源的 onmessage 监听器吗?
我正在尝试让 redux-saga 与onmessage
侦听器一起工作。我不知道为什么我所拥有的不起作用。
我有以下设置。
当调用APP_LOADED
调度动作时,打开流并调用 onMessage 侦听器,因为从服务器接收到数据,但是在调用生成器getTransactions
时调度动作没有任何运气。yield put(transactions(txs))
foo
谁能告诉我我做错了什么?
javascript - 将 redux-saga 与 ES6 生成器结合使用与 redux-thunk 与 ES2017 async/await 结合使用的优缺点
现在有很多关于 redux 镇最新的小子redux-saga/redux-saga 的讨论。它使用生成器函数来监听/调度动作。
在开始讨论之前,我想知道使用async/awaitredux-saga
的方法而不是下面的方法的优缺点。redux-thunk
一个组件可能看起来像这样,像往常一样调度操作。
然后我的动作看起来像这样:
javascript - 监听一个 redux 动作
我想创建一个可重用的 redux 表模块,它将存储和更新页码、显示的总页数等,我可以在所有页面之间共享。
但是,我需要更新操作来触发刷新数据操作,该操作将根据页面到达不同的端点。
因此,也许某些特定于页面的内容会监听“RefreshData”操作,然后触发另一个操作。实现这一目标的最佳方法是什么?我目前正在为我的中间件使用 redux-thunk,但一直在寻找 redux-saga。
实现这一目标的最佳方法是什么?
** 澄清 **
我在多个页面/项目上有表格,我想尽量减少代码重复。我在想我可以制作一个可放置的 redux 模块(动作+reducer),然后单独指定 REFRESH_DATA 动作的处理程序,所以我不需要在这个文件中放置开关。我认为使用 redux-saga 我可以监听 REFRESH_DATA 动作并根据当前页面进行切换?或者有什么更好的建议。
redux - redux-saga 是否在 redux 存储中存储任何状态?
我有兴趣了解更多关于 redux-saga 的信息,我很好奇它是否可以帮助解决我想解决的问题。通常,对于异步 API 调用,围绕正在运行的任务的状态有各种常见模式,例如它是否失败、是否仍在运行或是否成功完成。. 我一直在将这些作为分派的单独操作实现,但对于每个 API 调用,我发现我至少有 3 个相应的操作,我必须分别命名、管理和分派。为了缓解这种情况,我希望实现自己的抽象,但首先想验证 redux-saga 是否包含一些标准方法来跟踪 API 调用中的这些状态值,我可以使用这些方法而不是重新发明轮子。
也许还有其他库可能会有所帮助,但因为我对 redux-saga 感兴趣的其他原因,我主要想知道它是否提供了我所追求的东西。
redux - redux-saga 一些快速触发的相同动作错过了
您好,我在其中一个 React 组件中有一个 onChange 回调,它通过这样的地图调用多次分派一个动作:
我有一个像这样的“项目”的传奇:
换句话说,我预计每当 ITEMS_UPDATE_START 操作被调度时,它会派生一个新的 updateItemDbCrud 并继续执行一些 API 工作,但我注意到只有调度序列中的第一个通过。我用错了叉子吗?
谢谢!
javascript - 如何将发出的事件事件绑定到 redux-saga?
我正在尝试使用redux-saga将PouchDB中的事件连接到我的React.js应用程序,但我正在努力弄清楚如何将 PouchDB 发出的事件连接到我的 Saga。由于该事件使用回调函数(并且我无法将其传递给生成器),因此我无法yield put()
在回调内部使用,它在 ES2015 编译后(使用 Webpack)会给出奇怪的错误。
所以这就是我想要完成的,不起作用的部分是 inside replication.on('change' (info) => {})
。
javascript - 如何使用 Redux Saga 测试 API 请求失败?
我正在尝试测试我的传奇可能遵循的所有场景,但我无法实现我想要的行为。这很简单,我有一个 HTTP 请求(登录),我想通过模拟我的 API 方法来测试成功和失败的案例。
但是,看起来它call effect
并没有触发我的 api 函数,我还没有真正了解它是如何工作的,但我猜中间件负责调用该函数,因为我不去商店我的测试,我无法得到结果。
所以我的问题是,当您需要在异步调用旁边调度不同的操作(通常是成功或失败)时,如何测试您的传奇?
我找了一个例子,我发现 sagas 成功和失败,但失败案例从未测试过,例如在购物车示例中
SAGA.JS
测试.JS
reactjs - API 请求的 redux 传奇有意义吗?
我想知道通用请求传奇是否有意义?
它将采取REQUEST
包含所有信息(如标头、url、数据)的操作,并将其与自己的标头和基本 URL 合并。然后它将fetch
请求,然后put(REQUEST_SUCCEEDED, json)
在存储中使用 json 有效负载。
据我了解,这一次只允许一个请求,所以与其调用 API fetch 函数,afork
会更好吗?
saga 还可以access_token
在响应标头中遇到 API 时负责管理 API,并将其保存以供所有后续请求使用。
reactjs - 在 redux-saga 或 reducer 中处理下载的项目规范化?
我从删除 API 获得的数据不是我的应用可以处理的格式。我的传奇下载数据。
谁应该处理标准化?
使用规范化数据发送成功操作之前的传奇本身?
或者路由器应该在建立新状态之前标准化日期吗?
编辑我选择在传奇中规范化并保持减速器清洁。它只是用新的活动替换了activitiesUpdated
它。
减速机
这些是传奇:
当您想到updateActivities
传奇中的双包装 while 循环时?
这也是正确的吗
yield take([REFRESH_ACTIVITIES, LOGOUT])
只是一个捷径
yield race[take(REFRESH_ACTIVITIES), take(LOGOUT)]
cucumber - 如何在黄瓜功能中存根/模拟来自 redux-saga 的 api 请求?
我有一个定期产生 call(fetch, url) 的 redux-saga
我想要一个黄瓜功能来测试这个应用程序的行为。不是传奇本身。我已经有这样的测试了。
我无法理解如何模拟 fetch 操作,特别是因为并行 sagas 也在应用程序中运行。