我试图了解输入字段是如何在Reagent中工作的。
我首先尝试将on-change绑定到一个更改底层原子的简单函数:
(defonce app-state
(reagent/atom "Teodor"))
(defn page [ratom]
[:div
[:p
"Please enter your name: "
[:input {:on-change #(swap! ratom %)
:value @ratom}]]
[:p "Your name is " @ratom]])..。但没起作用。然而,这确实是:
(defonce app-state
(reagent/atom "Teodor"))
(defn page [ratom]
[:div
[:p
"Please enter your name: "
[:input {;:on-change #(swap! ratom %)
:on-change (fn [evt]
(reset! ratom (-> evt .-target .-value)))
:value @ratom}]]
[:p "Your name is " @ratom]])我设法去掉了->宏:
(fn [evt]
(reset! ratom (-> evt .-target .-value)))
;; is the same as
(fn [evt]
(reset!
ratom
(.-value (.-target evt)))).-value和.-target是做什么的?.-value和.-target的文档?发布于 2016-11-25 23:11:09
进入函数的evt是一个JavaScript事件对象。.-target和.-value是允许您访问事件所包含的基础值的JavaScript DOM属性。
这里是JavaScript互操作的世界,因此您必须去JavaScript获取文档。
至于使用或不使用->宏的复杂语义:对于那些喜欢在阅读时从左到右展开属性的人来说,这非常方便。->宏将使您的代码看起来类似于等效的JavaScript代码。
https://stackoverflow.com/questions/40812386
复制相似问题