问题标签 [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 - How to structure sagas depending on an API accessToken
I have a saga loginSaga
that performs the api call to get an accessToken
.
Once this succeeds I'd like to have bunch of other sagas to spin up that download data with this accessToken
Those sagas depend on the accessToken
, so they should only run until LOGOUT_SUCCESS
appears. Then they should finish. If they were currently in the process of downloading something this should be canceled, the result ignored.
This is what I have now:
Then the on LOGIN_SUCESS
depending sagas:
And since they all need the accessToken
they all have to wait until the LOGIN_FINISHED
because this carries it in the payload.
Also my sagas are all started at the beginning and wait.
I thought maybe, when the authorize
flow finishs it could then spin up the loginDependingSagas
with the accessToken
as a param.
like so:
function forkLoginDependingSagas(accessToken) { fork refreshUser(accessToken) fork updateActivities(accessToken) }
Is that a good pattern?
reactjs - 尽管产生了发送的动作,但 Saga 永远不会转换到下一个状态
此 saga 与LOGIN_SUCCESS
操作一起使用并正确保存数据。但是在那之后它永远不会对LOGOUT_SUCCESS
它也永远不会完成,因为这会将最后一行中的文本打印到控制台。
这是怎么回事?
redux - redux-saga 与 redux-saga - 不保存
我正在尝试将 redux-storage 和 redux-saga 中间件用于 redux。每个中间件单独工作都很好,但是当我使用 redux-saga 应用 redux-storage 时,存储不会加载先前的状态。我添加中间件如下:
javascript - 如何等待 2 个动作并将它们的结果加入 redux-saga
在我的应用程序中,我想定义一个 saga,它将处理一个LEFT_CHANGED
或多个RIGHT_CHANGED
动作,并继续使用SOURCES_CHANGED
由上述动作的有效负载组成的有效负载的新动作。
问题在于left
,right
变量是null
在SOURCES_CHANGED
发出动作并且不维护它们的值时(我相信由于迭代器的性质)。
有人可以帮忙吗?谢谢
javascript - 如何在 redux sagas 完成之前通过元标记加载初始存储数据?
目前,我遇到了一种情况,即在 sagas 完成填充商店之前加载服务器呈现的页面。但是,诸如此类的元素links
依赖于商店才能触发操作。例如login link
,需要更改应用程序的状态以显示模式,但还不能访问存储数据。我想立即通过meta tag
. 我怎样才能做到这一点?
javascript - Redux-Saga 连接多个生成器来存储
这可能是相当基本的,但我还没有找到解决方案。我正在使用redux-saga来处理我的异步 API 调用。我需要将多个听众连接到商店。我在示例中尝试过fork
,第一个叉子有效,但第二个没有。如何连接多个听众?
谢谢!
javascript - Redux Saga 实现旧的 Redux Thunk 操作
(N00B 警报)我正在尝试使用 redux-saga 实现以下 redux-thunk 操作(其中fetch
isomorphic -fetch):
我已经尝试过(可能非常不正确)以下变化无济于事(我意识到 fork 调用不应该包含匿名生成器函数,因为我为了清楚起见而设置了它们,但我正在制作原型,所以我并不担心关于清晰度):
并且在 store 初始化后在服务器端调用默认函数(其中sagaMiddleware
由
):
在客户端:
更新:以下是在FETCH_POSTS
服务器端呈现页面时调用操作的日志(这是一个通用/同构应用程序),数组中的数据只是随机键盘粉碎:P:
更新2:所以我已经将reducers、actions和sagas实现到一个ducks模块中:
并且它们都在客户端而不是服务器端按预期工作:/。我的configureStore.js
文件目前看起来像:
所以,我可以通过运行 rootPostSaga 来运行store.runSaga(rootPostSaga)
. 这适用于我的客户端代码的根文件,但我不确定将它放在服务器端的哪里我试过将它放在两者中server/server.js
:
在server/utils/fetchData
(包含fetchComponentData
`server/server.js 的函数的文件)中:
两者都无济于事:/
javascript - 在同级或远相关的 React 组件中处理输入焦点
我有一个组件 D,它位于组件树的一个单独的、更深的分支上,作为组件 E。当某个动作发生在 D 中(或堆栈中的任何位置)时,我想将输入集中在 E 中。我需要以某种方式存储对输入的全局引用,ref
或者是否有更好的方法来使用 sagas 控制跨远距离元素的文档焦点?
javascript - 如何使用 Redux-Saga 避免重复的 API 请求?
到目前为止,我比其他 Flux 实现更喜欢 Redux,并且我正在使用它来重新编写我们的前端应用程序。
我面临的主要挣扎点:
- 维护 API 调用的状态以避免发送重复请求。
- 维护记录之间的关系。
第一个问题可以通过在每种数据的子状态中保留一个状态字段来解决。例如:
现在我可以为帖子制作一个传奇,为评论制作另一个传奇。每个 Sagas 都知道如何获取请求的状态。但这很快就会导致大量重复代码(例如帖子、评论、喜欢、反应、作者等)。
我想知道是否有避免所有重复代码的好方法。
当我需要从 redux 商店获取 ID 评论时,第二个问题就出现了。是否有处理数据之间关系的最佳实践?
谢谢!