gpt4 book ai didi

redux-saga - 如何在没有 redux 的情况下使用 redux saga?

转载 作者:行者123 更新时间:2023-12-01 03:29:42 40 4
gpt4 key购买 nike

我使用 redux-saga 的主要原因之一是它进行异步函数调用的可测试性。我的困境是,当我使用不属于我的 redux 存储的有状态对象进行编程时,使用 sagas 进行编程变得非常尴尬。是否有使用非纯数据对象和 redux-saga 的最佳实践?

假设我有在 API 中注册的回调函数,在这种情况下是 firebase,我需要保留这些回调函数,以便以后取消注册。我无法将这些回调函数存储在 redux 中,那么将其写成 saga 还有意义吗?

在一段代码中似乎有点奇怪,以便能够使用诸如 put、select 之类的东西,而在其他代码中我必须使用 store.dispatch。

例子:

  const childAddedTrigger = (dataSnapshot: firebase.database.DataSnapshot) => {
const message = Object.assign({}, dataSnapshot.val(), {
key: dataSnapshot.key,
});
service.store.dispatch(Actions.channelMessageAdded(channelId, message));
}

service.firebase.database().ref(`channels/${channelId}/messages`)
.limitToLast(20)
.on('child_added', childAddedTrigger);

this.channelSubscriptions[channelId] = childAddedTrigger;

最佳答案

你会想要使用 Channels 的 redux-saga 概念。 .

效果就像 take, call, put这使得异步函数很容易使用 redux-saga 进行测试,默认情况下会与 redux 的 store 交互,因为该库首先是一个 redux 中间件。

但是,eventChannel factory 函数允许您从 websocket 或 firebase 获取外部事件源并从中“获取”事件,而不是从存储中分派(dispatch)操作并将事件“放置”到它们,而不是到 redux 存储。

关于redux-saga - 如何在没有 redux 的情况下使用 redux saga?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38861753/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com