试剂不注册原子监视器

4

我有一个涉及 luminusreagent 应用的简单入门程序。 我定义了一些组件定义:

(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")))

除了原子状态切换通知之外,其他都正常。在成功获取资源时,我看到了预期的“警报”消息,但页面对应的区域没有切换。
Chrome调试器显示,在原子切换的时候,原子的“watches”属性为空(null),因此没有触发任何通知。
我的做法可能有什么问题?

你在使用 reagent.core/atom 还是普通的 Clojure atom?请发布你的命名空间声明。 - sbensu
@sbensu 谢谢!当然是在Atom内置的情况下,没有使用Reagent引用。您能否在答案中描述这种歧义以便被接受呢? - Odomontois
1个回答

4

您应该使用reagent.core/atom而不是普通的Clojure atom。请在您的命名空间中添加以下内容:require

[reagent.core :as reagent :refer [atom]]

谢谢!这帮了很多忙。 - Odomontois

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接