我正在将甘特图编辑实现为React.js组件的集合。我正在努力解决在交互过程中如何在组件之间进行通信。例如,当拖动甘特图中的条时,我想更新相关条。依赖条可能在DOM中没有父子关系 - 所以我需要能够在相对不相关的组件之间进行通信,以便在新位置重新呈现相关条。
我在顶级尝试了setState,并让更改在层次结构中向下传播,但是当屏幕上有很多条形图时,拖动时速度太慢。
让每个bar / component注册事件处理程序看起来像很多开销,因为每个人都需要为不同的事件注册一个处理程序(因为我只想更新需要重绘的条形图)。
如果我能得到一个指针'对于组件实例,我可以将其临时存储在存储条形图的图形数据结构中。然后我只能在需要更新的组件上调用setState。
事件真的是解决这种情况的正确方法吗?
答案 0 :(得分:0)
我咬紧牙关,实施了一个基于pub / sub的解决方案,并没有像我预期的那样难看。事实上,我可以看到它提供的解耦优势 - 现在我已经有了基础设施,我可以从代码中的许多其他地方触发更新。