Простая форма Clojurescript
Я работаю с 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!"]
])
Я хочу получить значение этого ввода и передать его функции при нажатии кнопки. Как мне получить значение этого входа в мой on-click
функционировать?
2 ответа
Решение
Идиоматический и технически правильный способ - избегать сохранения любого состояния в 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!"]])
Вы можете получить значение элемента следующим образом: (.-value (.getElementById js/document "first-name"))
(defn form []
[:div
[:input {:type "text" :name "first-name" :id "first-name"}]
[:button {:on-click (fn [e] (test-func (.-value (.getElementById js/document "first-name"))))}
"Click me!"]
])
Если есть лучший ответ, пожалуйста, поделитесь.:)