发布-订阅模式与 UI 的可见性

Posted

技术标签:

【中文标题】发布-订阅模式与 UI 的可见性【英文标题】:Publish-subscribe pattern vs. visibility of UI 【发布时间】:2019-05-08 12:25:27 【问题描述】:

在我当前的 SPA 中,我将所有数据保存在一个集中式存储(状态)中,其操作会触发状态突变并发布某些 pubSub 事件。

我的 UI 逻辑组织在不同的视图(函数)中,当调用这些视图(函数)时,需要绘制所需的 UI 元素(缓存它们),附加 UI 事件并将视图特定的 UI 逻辑订阅到上述 pubSub 事件。

想法:用户触发 UI 事件,这些事件调用可能会或可能不会更改状态的业务逻辑,UI 会根据这些更改自动更新。

问题:不同的视图可能订阅同一个 store 事件,因此可能会为当时不存在的 UI 执行回调。

问题:我是否应该在视图更改时始终取消订阅视图的所有订阅,或者有更好的方法吗?

不涉及框架/库,主要用于学习目的。

附言。由于我对这些模式还很陌生,我很感谢任何可能有助于改进我的概念的建议。

【问题讨论】:

一些代码演示将有助于绕过确切的问题。尝试制作一个 codepen/fiddle 觉得没必要,不过我会尽快补充的。 是的,当视图更改时,您应该取消订阅视图的所有订阅。这是通常的做法。 【参考方案1】:

是的,当视图被取消订阅时,您应该取消订阅视图的所有订阅 改变了。这是通常的做法。

...根据 Wiktor Zychla 的评论。非常感谢!

【讨论】:

以上是关于发布-订阅模式与 UI 的可见性的主要内容,如果未能解决你的问题,请参考以下文章

isVisible() 是不是保证了 JAVA 中 UI 对象的可见性

iOS10 UI教程视图和子视图的可见性

Unity精华☀️UI和物体可见性的判断方法

Unity精华☀️UI和物体可见性的判断方法

Unity精华☀️UI和物体可见性的判断方法

微软边缘浏览器中的材料 UI 可见性密码出现问题检查了不同的方法