Redux 从Sagas中导入的API方法中分派存储操作会导致依赖循环

Redux 从Sagas中导入的API方法中分派存储操作会导致依赖循环,redux,redux-saga,Redux,Redux Saga,我有一个React应用程序,它使用基于socket.io的API方法。 文件webSocket.js处理套接字连接,以及发送和获取数据等基本方法,这些方法在我的所有应用程序中都使用 我有几个Redux存储属性,在各种套接字事件期间必须更改这些属性。为此,我将Redux存储从store.js导入webSocket.js并使用store.dispatch()触发相应的操作 这个解决方案工作得很好,直到我开始在我的项目中实施redux saga。 在我的基本故事中,我需要调用一个API方法,它依赖于w

我有一个React应用程序,它使用基于socket.io的API方法。 文件
webSocket.js
处理套接字连接,以及发送和获取数据等基本方法,这些方法在我的所有应用程序中都使用

我有几个Redux存储属性,在各种套接字事件期间必须更改这些属性。为此,我将Redux存储从
store.js
导入
webSocket.js
并使用
store.dispatch()
触发相应的操作

这个解决方案工作得很好,直到我开始在我的项目中实施
redux saga
。 在我的基本故事中,我需要调用一个API方法,它依赖于
webSocket.js
中的
send
方法。由于saga是在
store.js
中导入的,通过
redux saga
中间件将其连接起来,而
store.js
是在
webSocket.js
中导入的,因此即使我只导入特定的方法,我也会得到
依赖循环的Linter错误

这并不是说它破坏了我的应用程序,但我想避免这样的漏洞,让我安心。 我在Redux或Redux Saga文档中找不到任何关于我的案例的线索。 我对Redux有点陌生,所以也许我缺少一些基本的东西?
如果是这样,对于我的场景,什么是正确的解决方案?

一个选项是将websocket函数分解为两个文件—一个用于发送websocket消息,另一个用于处理传入消息。消息发送文件不应该依赖于存储,因为它不需要分派操作,然后sagas可以从该文件导入,而不需要依赖循环。收入消息处理文件将通过商店发送事件,而不依赖于传说。根据设置套接字的方式,您需要第三个文件来进行连接管理,发送方和处理程序文件依赖于该文件


一般来说,您希望找到打破依赖循环的关注点分离,我相信分离消息发送和处理将是创建这种分离的好地方。

是的,这似乎是一个合理的解决方案。谢谢,我会调查的!