4

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

假设我有 action PUSHER_CONNECT, PUSHER_CONNECTED, PUSHER_DISCONNECTED, PUSHER_LISTEN_TO_CHANNEL,PUSHER_MESSAGE_RECEIVED等。状态会有一些简单的东西来指示连接状态。

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

我怎样才能真正在这 2: 之间来回穿梭PUSHER_CONNECTEDPUSHER_DISCONNECTED因为推送连接仍然存在于某个地方。我正在考虑将 pusher 对象和相关对象保持在状态,如果是PUSHER_DISCONNECTED,请将它们设置为null. 但不能保证这些对象是不可变的。

另一个想法是,我会添加一个检查PUSHER_MESSAGE_RECEIVED: if state.connection !== 'connected'then don't push the new message... 模拟这是一个“真正的”断开连接。同样,添加一个检查PUSHER_CONNECT,如果 pusher 对象存在并且已连接,则不要重新连接,只需将状态更改为{connection: 'connecting'}

你会如何处理这个问题?

4

1 回答 1

0

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

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

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

于 2016-02-26T11:00:19.630 回答