我想写一个时钟应用程序之类的东西。状态基本上是一个重复递增的数字。一种方法可以在这里看到。
(ns chest-example.core
(:require [om.core :as om :include-macros true]
[om.dom :as dom :include-macros true]
[cljs.core.async :as async])
(:require-macros [cljs.core.async.macros :refer [go]]))
(defonce app-state (atom {:time 0}))
(defn clock-view [data owner]
(reify
om/IRender
(render [_]
(dom/div nil (pr-str data)))))
(go (while true
(async/<! (async/timeout 1000))
(om/transact! (om/root-cursor app-state) :time inc)))
(defn main []
(om/root
clock-view
app-state
{ :target (. js/document (getElementById "clock"))}))
我遇到的问题是这不是可重新加载的代码。一旦我通过无花果轮刷新代码,增量会变得更快,因为有几件事会更新状态。
我尝试尝试各种想法(基本上是制作不同的组件来拥有 go 语句代码),但我无法想出可行的方法。
有没有人对此有一个很好的解决方案,还是我只需要在开发过程中坚持下去?