目标
我正在为大型模块化应用程序的一个部分中的动作或事件寻找一种React-Redux兼容方式,以触发另一部分松散耦合的应用程序中的逻辑。类似于Pub-Sub系统,与React,Redux和Redux Code Splitting兼容。
场景
- 我有一个React + Redux Web应用程序,它使用code-splitting在运行时延迟加载多个包。捆绑软件包含以下代码:UI,Redux操作,Redux-Thunks和Redux Reducers
- Core模块具有一些逻辑,允许用户通过在字段中输入文本并单击按钮来创建笔记
- 我希望动态加载的捆绑包能够在创建新笔记时运行自定义逻辑。这可能包括副作用。创建便笺时,UI组件可能会或可能会在屏幕上呈现便笺
问题
通常,在紧密耦合的模块中,可以从Core模块中调用redux-thunk动作创建者(或类似的动作),以启动副作用并根据需要调度相关的Redux动作。但是,对于动态加载的包,无法使用对redux-thunk操作创建者的引用。
要求
- 必须避免直接从核心模块 引用到动态捆绑包,以免破坏代码拆分
- 在使用方事件中,必须支持“副作用”,例如API调用
- 即使当前未显示相关的UI组件,也必须允许动态加载的包逻辑作出响应
想法
- Observables :一种想法是将发布-订阅模式与Observables结合使用,类似于this article中所述。但是,我担心这可能会违反一些React-Redux最佳实践,破坏Redux开发工具中的“时间旅行”,并导致难以捕获错误……或者可能不会。使用React-Redux模式,我不确定哪种副作用是可以的,何时使用。
- Redux中间件:编写一些自定义Redux中间件以查找“小部件创建”操作,然后触发其他行为。感觉就像在重新发明轮子。
我不是以上任何一个的忠实拥护者。似乎我可能缺少一个更直接的选择
感谢您的帮助