在大型模块化React + Redux应用程序中束之间的松耦合的策略是什么

时间:2019-05-29 22:04:35

标签: reactjs redux

目标

我正在为大型模块化应用程序的一个部分中的动作或事件寻找一种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中间件以查找“小部件创建”操作,然后触发其他行为。感觉就像在重新发明轮子。

我不是以上任何一个的忠实拥护者。似乎我可能缺少一个更直接的选择

感谢您的帮助

0 个答案:

没有答案