clojurescript – 重新框架:输入:改变重置!不会改变输入值

我正在玩重新框架框架.

在下面的代码中,当用户输入以下内容时,我无法更新输入值:

(defn measurement-input [{:keys [amount unit path]}]
  (let [amt (atom amount)]
    (fn []
      [:div
       [:input {:type "text"
                :value @amt
                :on-change #(reset! amt (-> % .-target .-value))}]
       [:input {:type "button"
                :value unit}]])))

直到我将:value更改为:defaultValue之前,输入值才会更改.我很确定上面的例子与Reagent的输入示例密切相关.

在下面的代码中,我试图在用户更新输入值时做两件事.我正在尝试重置!输入的值以及将值分派给事件处理程序.我在do调用中完成了这两个函数调用.

另外值得注意的是,在下面的代码中,用户能够更新文本字段中的值.

(defn measurement-input [{:keys [amount unit path]}]
  (let [amt (atom amount)]
    (fn []
      [:div
       [:input {:type "text"
                :value @amt
                :on-change (do #(reset! amt (-> % .-target .-value))
                                (re-frame/dispatch [:update-value @amt]))}]
       [:input {:type "button"
                :value unit}]])))

在javascript控制台中,我收到以下错误:

Uncaught TypeError: Cannot read property 'call' of null  template.cljs?rel=1435381284083:101 

任何帮助都感谢大家!

最佳答案
Daniel Kersten在ClojureScript Google Groups上向我解释了为什么代码片段不起作用.该帖子的链接是here.

第一个代码段

试剂用它自己的实现覆盖了clojure的原子. re-frame的views.cljs默认不引用它.一旦你参考试剂的原子版本,事情就会奏效.

在views.cljs文件的顶部,更改此:

(ns performance-tracker.views
    (:require [re-frame.core :refer [subscribe dispatch]]))

至:

(ns performance-tracker.views
    (:require [reagent.core  :as reagent :refer [atom]]
              [re-frame.core :refer [subscribe dispatch]]))

第二个代码段

:on-change期望一个功能.我正在做一个阻止.简单地将do块包装在函数内部可以修复错误.请参阅下面的正确代码:

(defn measurement-input [{:keys [amount unit path]}]
  (let [amt (atom amount)]
    (fn []
      [:div
       [:input {:type "text"
                :value @amt
                :on-change #(do (reset! amt (-> % .-target .-value)) ;; argument literal, %, is the event passed in the function callback
                            (re-frame/dispatch [:update-value @amt [:measurements path :amount]]))}]
       [:input {:type "button"
                :value unit}]])))

转载注明原文:clojurescript – 重新框架:输入:改变重置!不会改变输入值 - 代码日志