我正在使用redux sagas事件频道。我有一个特定的用例,当事件被触发时我想得到getStore状态,因为eventChannel不是生成器函数我不能使用redux sagas的select效果。还有其他方法可以达到这个目的吗?
我还尝试导入商店并使用store.getState()
,但我得到了未定义,因为在初始化商店之前导入了saga文件。
function subscribe(socket) {
return eventChannel(emit => {
socket.subscribe(listenerTopic, {qos: 1});
socket.on('reconnection', () => {
// i need to fetch latest unread message, for that i need to get timestamp
// for last message received which is in store so the command will be to
// send sinceDate i.e last message timestamp and untilDate that is currentDate
})
}
答案 0 :(得分:1)
一种可能的解决方案是使用protocol test {
record test {
timestamp_ms time;
}
}
频道功能。
想法是每次发生套接字事件时将事件推入通道。与此同时,你有另一个传奇听取频道上的事件并作出相应的反应。因为聆听部分是一个传奇,你可以使用常见的传奇效果,如redux-saga
。
您的代码可能如下所示:
select
我希望这会对你有所帮助。