【发布时间】:2016-06-03 18:09:14
【问题描述】:
我正在使用 redux-thunk 并开始发现一些限制。
假设我有PUSHER_CONNECT、PUSHER_CONNECTED、PUSHER_DISCONNECTED、PUSHER_LISTEN_TO_CHANNEL、PUSHER_MESSAGE_RECEIVED 等操作。状态将有一些简单的东西来指示连接状态。
{ connection: 'connected' } // OR
{ connection: 'disconnected' }
我如何能够真正在这两个之间来回移动:PUSHER_CONNECTED、PUSHER_DISCONNECTED,因为推送连接仍然存在于某个地方。我正在考虑将推送器对象和相关对象保持在状态中,如果是PUSHER_DISCONNECTED,请将它们设置为null。但不能保证这些对象是不可变的。
另一个想法是,我会为PUSHER_MESSAGE_RECEIVED 添加一个检查:如果state.connection !== 'connected' 然后不要推送新消息...模拟它是“真正的”断开连接。同样,为PUSHER_CONNECT添加一个检查,如果推送对象在那里并且已连接,则不要重新连接,只需将状态更改为{connection: 'connecting'}
你会如何处理这个问题?
【问题讨论】:
-
你在说什么时间旅行? Redux 开发工具?它们只会改变应用程序看到的当前状态,但不会影响副作用。为什么要改变副作用?
-
是的 Redux DevTools。我只是想知道是否有可能有办法恢复来回的副作用,所以它是真正的“时间旅行”。如果我回到我没有连接到 Pusher 的状态,但连接仍然存在,那并不是真正的时间旅行。有这方面的最佳做法吗?
标签: redux redux-thunk