假设我有一个组件 C 在我的应用程序的两个地方使用。例如,我有一个显示在 2 个选项卡中的文件夹列表。当用户重命名文件夹的一部分时,此更改也应反映在另一部分中。
我正在考虑为此使用 EventBus 并使文件夹组件触发 EventBus 事件,例如 FolderChangedEvent。此事件将被第二个文件夹组件拦截,该组件将自动更新其文件夹列表。
问题是如果我想在某个时候在第三个地方使用这个文件夹组件,这个地方也会更新文件夹列表。这可能不是应用程序的期望行为。
通常,我会让 Folder 组件有一个自己的 addFolderChangedHandler(...) 方法,但是由于这个组件非常复杂并且有子组件,这可能会创建意大利面条式的代码。但是,我不觉得这个组件应该包含任何特定于应用程序的逻辑并直接在应用程序的 EventBus 中引发事件,这对它来说太高级了。
这种情况下的最佳实践是什么?您如何有效地使用 EventBus?