【问题标题】:Clojurescript reagent text field does not display typed content when I add :on-change handler当我添加 :on-change 处理程序时,Clojurescript 试剂文本字段不显示键入的内容
【发布时间】:2016-11-03 06:02:55
【问题描述】:

我正在关注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 处理程序时,我输入的任何内容都会显示出来。有人可以帮助我了解发生了什么吗?

非常感谢!

【问题讨论】:

    标签: clojurescript reagent


    【解决方案1】:

    我发现了错误。第一行是使用常规的 Clojure 原子。相反,它应该使用试剂原子。将该行更改为

    (def state (r/atom {:doc { } :saved? false}))
    

    解决问题。

    【讨论】:

    • 谢谢您,先生!我刚刚花了几个小时试图找出问题所在)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多