简单的 Clojurescript 形式

jma*_*svt 1 clojure hiccup clojurescript reagent

我正在使用 Reagent 和 CLJS,熟悉 React 和 Clojure,不太熟悉 CLJS。我想做一个简单的表单,但在 CLJS 中对我来说并不明显。

(defn form []
  [:div
   [:input {:type "text" :name "first-name" :id "first-name"}]
    [:button  {:on-click (fn [e] (test-func "hello"))}
  "Click me!"]
])
Run Code Online (Sandbox Code Playgroud)

我想获取该输入的值,并在单击按钮时将其传递给函数。我如何将该输入的值放入我的on-click函数中?

Nek*_*Nek 5

惯用且技术上正确的方法是避免在 DOM 中保留任何状态并直接访问它。你不应该依赖输入的值。保持状态为试剂的原子。然后你可以用它做任何事情。

(def first-name (r/atom ""))

(defn form []
  [:div
   [:input {:type "text"
            :value @first-name
            :on-change #(reset! first-name (.-value (.-target %)))
            }]
   [:button  {:on-click #(test-func @first-name)} "Click me!"]])
Run Code Online (Sandbox Code Playgroud)