如何在重新框架中只订阅一次 app-db?

问题描述

我需要订阅 app-db 以获取我只想在呈现父组件时检查一次的值。例如,当我单击“单击我”按钮时,正在处理某个 on-click 事件,我已将其状态保存在 app-db 中,其中包含正在执行的进程列表,我只是想要检查该值一次,并根据该值显示两个不同的组件。

如果值为空,我想继续正常事件。如果没有,我想向用户显示其他内容,例如弹出窗口。

现在的情况是,因为它正在积极地监听 app-db,并且该值几乎每一秒(或几毫秒)都在变化,所以上述弹出窗口出现、消失、重新出现并再次消失对 app-db 的每次更改都非常快,这根本没有帮助。

我只想订阅一次,获取值,然后根据第一次呈现父级时的值进行检查。然后我会做一些事情来消除它。

如果我再次点击“点击我”按钮,那只会是我想要重新渲染的时候。

我还没有完全能够做到这一点。我尝试了很多方法,例如在弹出的调度期间引入延迟以及首先将处理状态引入 app-db 之后希望由于数据已经处于稳定状态,因此它可能不会改变为很多,但现在我意识到它正在积极倾听它,预计这些值会改变。

我确实尝试使用没有 deref 的订阅,但这只会给我的前端引入一个错误,所以我不确定现在该走哪条路。

解决方法

我对组件出现/重新出现的错误结果证明是由其他原因触发的。与弹出窗口 ID 的冲突/不匹配以及清除一个弹出窗口的调度导致所有弹出窗口都被销毁。

但是为了回答这个问题,当您在 (fn []) 绑定之后引入一个 let 块时您实际进行订阅并从 fn 内部调用组件时,它会起作用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...