我试图将为App.js中的客户端创建的套接字存储在我的Redux商店中?我不确定这是否是一个好主意,但我希望能够在多个组件中访问同一个套接字,所以我想我可以像对其他对象那样做。然而,到目前为止,我在redux存储中存储的东西都是带有字段的严格对象,我从来没有存储过具有函数的对象。当我尝试调用存储的socket的函数时,我得到:TypeError:this.props.socket.emit不是函数。我猜这意味着我不能使用Redux存储类实体。是这样吗?什么是正确的解决方案呢?
gkl3eglg1#
最好的方法是隔离所有处理套接字的代码,只公开那些组件调用的函数(比如socket.send(message: string)发送消息等)。不要担心import一次又一次地执行相同的模块/文件,因为无论您导入/请求它多少次,都会返回相同的示例。因此,隔离套接字函数并在需要的地方导入它们是安全的。此外,Redux是一个状态管理库,因此请不要期望它处理函数和其他高级功能。
socket.send(message: string)
import
nle07wnf2#
Middleware是Redux应用程序中持久连接(如websockets或www.example.com socket)的正确位置,原因如下:socket.io socket in a Redux app, for several reasons:
这些是帮助您开始的好链接:
2条答案
按热度按时间gkl3eglg1#
最好的方法是隔离所有处理套接字的代码,只公开那些组件调用的函数(比如
socket.send(message: string)
发送消息等)。不要担心
import
一次又一次地执行相同的模块/文件,因为无论您导入/请求它多少次,都会返回相同的示例。因此,隔离套接字函数并在需要的地方导入它们是安全的。此外,Redux是一个状态管理库,因此请不要期望它处理函数和其他高级功能。
nle07wnf2#
Middleware是Redux应用程序中持久连接(如websockets或www.example.com socket)的正确位置,原因如下:socket.io socket in a Redux app, for several reasons:
这些是帮助您开始的好链接: