我使用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'
则不要推送新消息...模拟它是' sa"真实"断开。同样,添加对PUSHER_CONNECT
的检查,如果推送对象在那里并且已连接,请不要重新连接,只需将状态更改为{connection: 'connecting'}
你会怎么做?
答案 0 :(得分:0)
您可以订阅商店并管理类似“双向约束”的内容。
在监听器中,检查状态,如果它与存储状态相矛盾,则执行必要的效果。注意不要在那里进入无限循环。
这是用于在时间旅行中同步URL栏的方法https://github.com/reactjs/react-router-redux。