Chi*_*365 5 clojurescript re-frame
某些事件不会导致app-db变化.他们只更改dom,例如:init自定义滚动,获取所选文本等.我应该如何在重新框架中处理它们,因为事件处理程序需要返回一个新的app-db?我通过返回现有的数据库来解决这个问题,但这似乎不对.有没有更好的方法呢?我的一些处理程序看起来像这样:
(re-frame/reg-event-db
:init-link-viewer
(fn [db [_ highlights]]
(utils/load-highlights highlights)
(utils/init-selection)
db))
Run Code Online (Sandbox Code Playgroud)
您可以使用该reg-event-fx函数注册一个效果处理程序,该处理程序返回一个效果图(而不是reg-event-db仅返回效果图db).您的效果图可以为空,也不需要返回db.有关详细信息,请参见效果.
您可以将您的活动重写为:
(reg-event-fx
:init-link-viewer
(fn [db [_ highlights]]
(utils/load-highlights highlights)
(utils/init-selection)
{}))
Run Code Online (Sandbox Code Playgroud)
但是,您可能希望更进一步,并将副作用作为数据返回.这意味着您的事件处理程序很容易测试,并将事件与其副作用分离.这意味着您还需要编写和注册效果处理程序.这看起来像是这样的:
(reg-event-fx
:init-link-viewer
(fn [db [_ highlights]]
{:load-highlights highlights
:init-selection true}))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |