当我添加 :on-change 处理程序时,Clojurescript 试剂文本字段不显示键入的内容
Clojurescript reagent text field does not display typed content when I add :on-change handler
我正在关注 http://yogthos.net/posts/2014-07-15-Building-Single-Page-Apps-with-Reagent.html 上的 Reagent SPA 教程。
我目前的代码是:
(def state (atom {:doc {} :saved? false}))
(defn set-value! [id value]
(swap! state assoc :saved? false)
(swap! state assoc-in [:doc id] value))
(defn get-value [id]
(get-in @state [:doc id]))
(defn row [label body]
[:div.row
[:div.col-md-2 [:span label]]
[:div.col-md-3 body]])
(defn text-input [id label]
[row label
[:input {:type "text"
:class "form-control"
:value (get-value id)
:on-change #(set-value! id (-> % .-target .-value))}]])
(defn home-pg []
[:div.container
[:div.page-header [:h1 "Reagent Form"]]
[text-input :first-name "First name"]])
现在,当我 运行 在文本框中输入文本时,什么也没有出现。当我删除 :on-change 处理程序时,无论我输入什么都会显示出来。有人可以帮助我了解发生了什么吗?
非常感谢!
我发现了错误。第一行是使用常规的 Clojure 原子。相反,它应该使用试剂原子。将该行更改为
(def state (r/atom {:doc { } :saved? false}))
解决了问题。
我正在关注 http://yogthos.net/posts/2014-07-15-Building-Single-Page-Apps-with-Reagent.html 上的 Reagent SPA 教程。
我目前的代码是:
(def state (atom {:doc {} :saved? false}))
(defn set-value! [id value]
(swap! state assoc :saved? false)
(swap! state assoc-in [:doc id] value))
(defn get-value [id]
(get-in @state [:doc id]))
(defn row [label body]
[:div.row
[:div.col-md-2 [:span label]]
[:div.col-md-3 body]])
(defn text-input [id label]
[row label
[:input {:type "text"
:class "form-control"
:value (get-value id)
:on-change #(set-value! id (-> % .-target .-value))}]])
(defn home-pg []
[:div.container
[:div.page-header [:h1 "Reagent Form"]]
[text-input :first-name "First name"]])
现在,当我 运行 在文本框中输入文本时,什么也没有出现。当我删除 :on-change 处理程序时,无论我输入什么都会显示出来。有人可以帮助我了解发生了什么吗?
非常感谢!
我发现了错误。第一行是使用常规的 Clojure 原子。相反,它应该使用试剂原子。将该行更改为
(def state (r/atom {:doc { } :saved? false}))
解决了问题。