在普通函数/ eventChannels中使用select effect

时间:2017-04-05 16:11:04

标签: redux-saga

我正在使用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
   })
}

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使用protocol test { record test { timestamp_ms time; } } 频道功能。 想法是每次发生套接字事件时将事件推入通道。与此同时,你有另一个传奇听取频道上的事件并作出相应的反应。因为聆听部分是一个传奇,你可以使用常见的传奇效果,如redux-saga

您的代码可能如下所示:

select

我希望这会对你有所帮助。