gpt4 book ai didi

clojurescript - 编写不改变 app-db 的重新框架事件

转载 作者:行者123 更新时间:2023-12-04 18:59:54 28 4
gpt4 key购买 nike

某些事件不会导致 app-db改变。它们只更改 dom,例如:初始化自定义滚动、获取所选文本等。由于事件处理程序需要返回新的 app-db,我应该如何在重新框架中处理它们?我通过返回现有的数据库来解决问题,但这似乎不对。有没有更好的方法来做到这一点?我的一些处理程序看起来像这样:

 (re-frame/reg-event-db
:init-link-viewer
(fn [db [_ highlights]]
(utils/load-highlights highlights)
(utils/init-selection)
db))

最佳答案

您可以使用 reg-event-fx注册一个返回效果图的效果处理程序的函数(与仅返回 reg-event-db 相反的 db )。您的效果图可以为空,并且不需要返回 db .见 Effects有关这方面的更多信息。

您可以将事件重写为:

(reg-event-fx
:init-link-viewer
(fn [db [_ highlights]]
(utils/load-highlights highlights)
(utils/init-selection)
{}))

但是,您可能希望更进一步,并将副作用作为数据返回。这意味着您的事件处理程序很容易测试,并将事件与其副作用分离。这意味着您还需要编写和注册效果处理程序。这可能看起来像:
(reg-event-fx
:init-link-viewer
(fn [db [_ highlights]]
{:load-highlights highlights
:init-selection true}))

关于clojurescript - 编写不改变 app-db 的重新框架事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40124255/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com