我关注Redux" subapp"模式described here,但我在确定调用传递给子应用程序的回调的最佳方法时遇到了一些麻烦,特别是在响应异步操作时。
这是一个不优雅但有效的解决方案:https://jsfiddle.net/jochakovsky/bgx86m6j/。我不是这种方法的忠实粉丝 - 它迫使我将回调进一步向下传递到ReduxSubappView
,我不应该知道关于该回调的任何信息。调用回调最自然的地方是异步操作创建者initialize
,但它无法访问传递给ReduxSubApp
的道具。此外,比较道具和nextProps感觉很奇怪 - 表示组件应该只负责将当前道具转换为UI,而不必理解状态转换。此外,ReduxSubappView
不能成为这种方法的纯功能组件。
处理此类情况的最佳方法是什么?
答案 0 :(得分:0)
如果您不想从Subapp根级别和传递道具,则不能在所有Subapps中使用redux,您需要一个全局pub / sub或类似于订阅的东西变化。
以下是使用addEventListener
的原生方法:
// in Subapp:
document.addEventListener('initialized', function(e){console.log('app initialized')});
// Wherever the event originates from:
document.dispatchEvent(new Event('initialized'));
一个专用的库可能会更好,因为这会让事件在DOM中冒泡(无缘无故),但它应该是开箱即用的。