我的react / redux应用程序中有多个模块,让我们说:
root:
|-- moduleA
|-- moduleB
|-- moduleC
|-- ...
它们都有相似的形状:
moduleX
|-- components
|-- containers
|-- actions.js
|-- reducers.js
|-- index.js
而且moduleA需要来自moduleB的很少的动作,但是moduleB也需要来自moduleA的很少的动作。他们使用来自另一个模块的操作,因为他们有时必须修改另一个模块的状态(redux store)。这是商业逻辑,我不想复制商店的部分内容。
所有模块都有index.js文件,它们导出动作,reducers和主容器。但是从moduleB中的moduleA导入index.js和从B inn A导入index.js会导致循环依赖:
ERROR in Circular dependency detected:
src/moduleA/containers/Container.jsx ->
src/moduleB/index.js ->
src/moduleB/containers/Container.jsx ->
src/moduleA/index.js ->
src/moduleA/containers/Container2.jsx ->
src/moduleA/containers/Container3.jsx ->
src/moduleA/containers/Container.jsx
循环依赖插件报告了更多错误。
我想知道,我怎么能只从moduleA中的moduleB index.js导入动作?现在,作为解决方法,我使用这种模式:
import * as moduleBActions from "../path/to/moduleB/actions"
还有其他方法吗?我必须在index.js中导出容器,因为它们是模块API的一部分,我在路由器配置中使用它们。我不想复制商店的部分内容(每个模块在状态对象中都有自己的分支)