我需要向app-db订阅一个值,该值在呈现父组件时只需要检查一次。例如,当我单击"Click me“按钮时,有一个正在处理的on-click事件,我已经将其状态与正在完成的进程列表一起保存在app-db上,我只想对照该值检查一次,并根据该值显示两个不同的组件。
如果值为空,我想继续正常的事件。如果没有,我想向用户展示一些其他的东西,例如弹出窗口。
现在的问题是,因为它正在主动监听app-db,并且值几乎每秒都在变化(或在几毫秒内),所以每次更改app-db时,上述弹出窗口都会出现、消失、重新出现,然后又以极快的速度消失,这根本没有任何帮助。
我只想订阅一次,获取值,并根据第一次呈现父对象时的值进行检查。然后我会做点什么让它消失。
如果我再次点击"Click me“按钮,那只是我想要重新渲染的时候。
我还没有完全做到这一点。我尝试了许多方法,比如在发送弹出窗口的过程中引入延迟,以及在将处理状态引入app-db之后,首先希望由于数据已经处于稳定状态,它可能不会发生太多变化,但现在我意识到它正在积极侦听它,预计值将会发生变化。
我确实试过在没有deref的情况下使用订阅,但这只是在我的前端引入了一个错误,所以我不确定现在该怎么做。
发布于 2021-06-08 15:43:58
我的组件消失/重新出现的错误原来是由其他东西触发的。与popup-ids的冲突/不匹配,以及清除一个popup导致全部销毁的调度。
但是为了回答这个问题,当您在let绑定之后引入一个(fn [])块并从fn内部调用组件时,它可以工作。
https://stackoverflow.com/questions/67878891
复制相似问题