ES6 - 从模块和循环依赖项中导出index.js

时间:2016-12-23 06:36:07

标签: javascript import webpack circular-dependency

我的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的一部分,我在路由器配置中使用它们。我不想复制商店的部分内容(每个模块在状态对象中都有自己的分支)

0 个答案:

没有答案