问题标签 [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.
javascript - redux-observable 中的独立链取消?
我是 RxJS 的新手。在我的应用程序中,我需要独立取消延迟操作。这是一个工作示例(延迟为 3 秒)。但是当我选择删除多个项目并取消其中一项时,然后一次全部取消。
史诗代码:
我想我需要传递一个id
totakeUntil
运算符,但我不知道该怎么做。
redux-observable - 如何在单个 redux observable 史诗中等待/屈服于多个动作?
我有一个 redux Saga,每次调度“WATCHLIST_FETCH_REQUEST”时都会运行三个不同的操作:
这个传奇的流程本质上是同步的。操作 1 必须首先运行才能设置应用的全局加载状态。Action 2 必须在 Action 1 之后和 API 响应返回后运行,以在网络活动完成时移除全局加载状态。
我对 redux-observable 还很陌生,但我一直在挖掘很多东西,试图弄清楚如何将这个传奇转变为史诗。这里的两个目标:
- 依次执行操作,一个接一个,而不是并行运行
- 在单个史诗中执行这些操作/流程(当 type: 'WATCHLIST_FETCH_REQUEST' 被触发时开始)
你如何使用 redux-observable 来实现这一点?谢谢!
reactjs - react + redux + redux-observable + 401 错误的全局处理程序?
unauthorised
在 redux 和 redux-observable中如何处理的一些新手问题
我有一个应用程序,用户必须经过身份验证才能向 api 发出请求。
如果用户提供的令牌无效,则端点返回 401 http 错误代码。
那么我该如何优雅地处理这个(我正在使用 fetch)?
选项1:
- 创建某种函数,我将使用该函数将所有 api 调用包装在史诗中,它将 401 响应转换为类似
NotLoggedInAction
- 创建一个reducer来处理
NotLoggedInAction
和设置用户未登录状态的标志 - 订阅根组件 (?) 中的状态更改并检查未登录标志
- 如果未登录标志到达,将用户重定向到登录页面(登录页面是外部应用程序,所以我会使用
window.location.href
?)
这个选项有点灵活,因为在重定向之前我可以显示一些弹出窗口,比如“嘿,你的会话已过期等”。
但它也不容易出错(我必须始终将错误处理连接到每个调用,并在每个史诗中添加依赖项NotLoggedInAction
)
选项 2:
- 在 combineEpics 中使用do
并注意错误 - 如果 401 到达,只需将用户重定向到登录页面(通过相同的window.location.href
这对我来说看起来更简单,但这更像是一个“黑客”?
我走对了吗?是更好的选择吗?
angular - ReplaySubject.next(value) 是否违反了 redux store 的不可变状态原则?
我有一个 Angular2 应用程序,它从需要身份验证的源中获取数据,因此应用程序组件的 init 事件会像这样启动 auth 令牌获取:
Redux 正在存储一个 Rxjs5 ReplaySubject,并且这个主题将从 reducer 获取令牌值,如下所示:
这段代码对我有用,但它是否违反了 redux 商店的不可变状态原则?
reactjs - 使用 redux-observable 史诗通过多个动作来装饰数据
我正在苦苦挣扎redux-observable
,试图弄清楚如何用这个流程创建史诗:
- 听一个
GET_ITEMS_REQUEST
动作 - 发送 HTTP 请求以获取一些项目
- 获取这些项目的 ID 并发送一个
GET_ITEM_DETAILS_REQUEST
操作,该操作将发送另一个 HTTP 请求以获取这些项目的更多详细信息 - 用第二个请求中的细节装饰第一个请求中的项目并发送最终
GET_ITEMS_SUCCESS
操作,这将更新 redux 状态
从第 3 步到第 4 步是我卡住的地方。我知道如何GET_ITEM_DETAILS_REQUEST
使用项目 ID 进行调度,但我不知道如何侦听/订阅GET_ITEM_DETAILS_REQUEST
操作以获取项目详细信息响应。
到目前为止,我有以下内容:
reactjs - 从其他史诗中调用史诗
首先是这个很棒的图书馆的许多道具!不过,我仍在为一个用例而苦苦挣扎。我想先调用另一个史诗并等到它完成后再继续当前的史诗。假设我有一个用户可以更改内容的表单。在将其他数据加载到表单之前,我想先保存当前的更改。对此有什么想法吗?
javascript - 使用 Redux-Observable 调度延迟的第二个动作,同时保留第一个动作
我正在尝试创建一个将采取行动的史诗,然后调度两个不同的行动,第二个行动延迟两秒。经过一堆尝试,这是我能做的最好的:
不幸的是,似乎:
在我的应用程序加载后立即运行(而不是在事件从父流中下来时)。我注意到了这一点,因为FETCH_SUCCESS
在我的应用程序加载后两秒钟,reducer 就收到了这个动作。我什至附上了一个console.log
来确认这一点:
“这已经开始”在应用程序启动时记录到控制台。
我怀疑这与 Redux-Observable 如何为您自动订阅有关。
期望的行为是我将:
- 单击调度
FETCH_WILL_SUCCEED
事件的按钮。 - 立即,一个
FETCH_REQUEST
事件被分派。 - 两秒后,一个
FETCH_SUCCESS
事件被分派。
redux-observable - 在捕获错误时触发多个操作
我正在努力弄清楚如何catch
在我的史诗中的错误处理程序中触发多个操作。
我已经成功地弄清楚了如何使用 thunk-middleware 在我的史诗中成功的异步调用上触发多个操作。见下文:
任何人都可以指导我如何catch
返回或触发两个可观察到的动作,这些动作将像我成功的方式一样被调度?
javascript - 如何延迟一个史诗直到另一个史诗发出一个值
在 redux-observable 中,我需要在执行 API 请求之前等待,直到另一个史诗完成。使用 combineLatest 不起作用,APP_INITIALIZED 完成后没有任何反应。我也试过 withLatestFrom 但都不起作用。