首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClojureScript/Reagent中的绑定-更改

ClojureScript/Reagent中的绑定-更改
EN

Stack Overflow用户
提问于 2016-11-25 21:18:34
回答 1查看 3.1K关注 0票数 3

我试图了解输入字段是如何在Reagent中工作的。

我首先尝试将on-change绑定到一个更改底层原子的简单函数:

代码语言:javascript
复制
(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]])

..。但没起作用。然而,这确实是:

代码语言:javascript
复制
(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]])

我设法去掉了->宏:

代码语言:javascript
复制
(fn [evt]
  (reset! ratom (-> evt .-target .-value)))
;; is the same as
(fn [evt]
  (reset!
    ratom
    (.-value (.-target evt))))
  1. .-value.-target是做什么的?
  2. 在哪里可以找到.-value.-target的文档?
  3. 为什么选择更复杂的语义学?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-25 23:11:09

进入函数的evt是一个JavaScript事件对象。.-target.-value是允许您访问事件所包含的基础值的JavaScript DOM属性。

这里是JavaScript互操作的世界,因此您必须去JavaScript获取文档。

至于使用或不使用->宏的复杂语义:对于那些喜欢在阅读时从左到右展开属性的人来说,这非常方便。->宏将使您的代码看起来类似于等效的JavaScript代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40812386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档