【发布时间】:2016-10-31 05:47:35
【问题描述】:
我有一个包含各种组件的游戏 UI,其中一些可以单击以突出显示(“活动”组件)。目前,这是通过在可以突出显示的每个组件的状态中设置一个 Bool 来完成的。但是,我想强制一次只能突出显示一个组件 - 因此,如果单击某些内容,则当前突出显示的其他任何内容都必须更新为取消突出显示。
做到这一点的一种方法是让共同的祖先向所有不同的孩子广播一些消息,每个组件都可以处理这个消息并关闭自己 - 但是这看起来非常复杂和浪费。可能有 1000 个组件,只有两个在变化(一个突出显示,一个取消突出显示),那么为什么要发送和处理 1000 条消息?
有没有更好的办法?
注意:这似乎与Elm 0.17: How to subscribe to sibling/nested component changes 非常相似。我认为一个区别是,在那个问题中,相关的组件数量很少,当一个组件发生变化时,另一个总是会发生变化。在我的例子中,整个模型的不同位置有很多组件,当其中一个发生变化时,其他的很少或根本不会发生变化。
【问题讨论】:
标签: elm