在 Redux 应用程序中,应该把 socket 对象放在哪里?

5
我正在使用react,redux和socket.io开发聊天应用程序。如我们所知,redux非常有助于将一些状态传递到深度和嵌套的组件。我喜欢将一些属性作为redux状态存储,然后传递给一些嵌套的组件。我使用socket.io-client库创建socket对象。
我需要将创建的socket对象传递给一些深度嵌套的组件,因此,我考虑将socket对象创建在redux状态中,以便可以轻松地在嵌套的组件中使用它。
这是一个好方法吗?还是应该做其他事情?
1个回答

13
不是这样的。
我们最近添加了一个关于在Redux应用程序中Websockets应该放置在哪里的Redux FAQ条目。引用该条目:
“Middleware是Redux应用程序中像Websockets这样的持久连接的正确位置,原因如下:
- Middleware存在于应用程序的整个生命周期中。 - 像存储本身一样,您可能只需要一个给定连接的单个实例,整个应用程序都可以使用它。 - Middleware可以查看所有已分派的操作并自行分派操作。这意味着中间件可以将已分派的操作转换为通过websocket发送的消息,并在通过websocket接收到消息时分派新操作。 - Websocket连接实例不可序列化,因此不属于存储状态本身。”

2
例子总是很有帮助的,就像这个一样。谢谢! - Aziz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接