试剂不注册原子手表
Reagent does not register atom watch
我有一个简单的新人luminus with reagent申请。
我定义了一些组件定义:
(def md-vals (atom nil))
(defn markdown [url]
(GET
(str js/context url)
{:handler
(fn [response]
(swap! md-vals assoc url response)
(js/alert (str "loaded\n" (subs response 1 100))))})
(fn [] [:p (get @md-vals url "loading...")]))
作为页面组件的用法:
(defn docs [] [markdown "/md/docs.md"])
最后是页面绑定:
(defn init! []
...
(render-component (docs) (.getElementById js.document "docs")))
除原子状态切换通知外,一切正常。在成功获取资源时,我看到了预期的 alert
消息,但是页面的相应区域没有切换。
Chrome 调试器显示在原子切换时刻原子的 watches
属性 是空的 (null
),因此没有触发通知。
我的方法可能有什么问题?
您应该使用 reagent.core/atom
而不是常规的 Clojure atom
。将此添加到您的命名空间 :require
:
[reagent.core :as reagent :refer [atom]]
我有一个简单的新人luminus with reagent申请。 我定义了一些组件定义:
(def md-vals (atom nil))
(defn markdown [url]
(GET
(str js/context url)
{:handler
(fn [response]
(swap! md-vals assoc url response)
(js/alert (str "loaded\n" (subs response 1 100))))})
(fn [] [:p (get @md-vals url "loading...")]))
作为页面组件的用法:
(defn docs [] [markdown "/md/docs.md"])
最后是页面绑定:
(defn init! []
...
(render-component (docs) (.getElementById js.document "docs")))
除原子状态切换通知外,一切正常。在成功获取资源时,我看到了预期的 alert
消息,但是页面的相应区域没有切换。
Chrome 调试器显示在原子切换时刻原子的 watches
属性 是空的 (null
),因此没有触发通知。
我的方法可能有什么问题?
您应该使用 reagent.core/atom
而不是常规的 Clojure atom
。将此添加到您的命名空间 :require
:
[reagent.core :as reagent :refer [atom]]