我的项目结构是这样的 src>组件>模块 模块包含A,B,C等
每个模块包含-组件,action.js,reducer.js,module.js,saga.js 我们使用redux动态模块动态添加模块,并将模块依赖项添加到module.js
我有一些项目要求,以检查DOM中是否存在组件A,并且组件B进来了,我必须关闭组件A并显示ComponentB。
因此,我编写了一个模块D(活动模块),该模块具有活动组件的状态,并添加了D作为对A,B,C的依赖关系
A,B,C使用D的选择器获得活动模式,并对照活动模式检查传入模式。
如果A存在,然后B进入,则B从D的选择器获得活动模式,并向模块A调度动作。因此,B将A添加为依赖项。
如果我要为活动的B和传入的A写相同的代码,我最终会将B作为对A的依赖项添加。
这导致循环依赖,我们在代码中使用redux sagas。
欢迎任何建议
答案 0 :(得分:0)
您可以使用应用程序上下文,模块可以通过它使用其他模块。 以下几行伪代码描述了我所做的事情:
// applcation-context.js
// Code with regesterModules(...modules)
// and methods/functions actions(moduleId), selectors(moduleId), ...
// bootstrap.js
import A from 'modules/A'
import B from 'modules/B'
appContext.regesterModules([A, B])
// Module A index.js
exports {moduleId: 'A', reducers, sagas, selectors, actions, routes, ... }
// Module B
import appContext from '../../application-context'
[...]
yield put(appContext.actions('A').actionCreator_1(...))
[...]