Redux - 服务连接等副作用的时间旅行

时间:2016-02-22 10:44:23

标签: redux redux-thunk

我使用redux-thunk并开始看到一些限制。

假设我有PUSHER_CONNECTPUSHER_CONNECTEDPUSHER_DISCONNECTEDPUSHER_LISTEN_TO_CHANNELPUSHER_MESSAGE_RECEIVED等行为。状态会有一些简单的表示连接状态

{ connection: 'connected' } // OR
{ connection: 'disconnected' }

我能如何真正在这两个之间来回旅行:PUSHER_CONNECTEDPUSHER_DISCONNECTED因为推送器连接仍然存在于某个地方。我正在考虑将推动对象和相关对象保持在状态中,如果它是PUSHER_DISCONNECTED,则将它们设置为null。但是不能保证这些对象是不可变的。

另一个想法是,我会为PUSHER_MESSAGE_RECEIVED添加支票:如果state.connection !== 'connected'则不要推送新消息...模拟它是' sa"真实"断开。同样,添加对PUSHER_CONNECT的检查,如果推送对象在那里并且已连接,请不要重新连接,只需将状态更改为{connection: 'connecting'}

你会怎么做?

1 个答案:

答案 0 :(得分:0)

您可以订阅商店并管理类似“双向约束”的内容。

在监听器中,检查状态,如果它与存储状态相矛盾,则执行必要的效果。注意不要在那里进入无限循环。

这是用于在时间旅行中同步URL栏的方法https://github.com/reactjs/react-router-redux