2017-09-20 34 views
3

我刚学试剂Clojurescript,我只是遵循一些教程,但也许我错过了什么我有这样的代码为国家正确操作状态试剂

(defonce app-state (atom {:text "Hello Chestnut!" :click-count 0})) 

和渲染视图

(defn article [] 
    [:div 
    [:div "The atom" [:code "click-count"] " has value : " (:click-count @app-state)] 
    [:input {:type "button" :value "Add" 
      :on-click #(swap! (:click-count @app-state) inc)}] 
    ] 
) 

我试图增加按钮按下时的状态,但我在控制台上发现了这个错误

Error: No protocol method ISwap.-swap! defined for type number: 0

+1

有用的文档:https://clojuredocs.org/clojure.core/swap! – Bill

+1

我读过了,但是谢谢:) – Ampersanda

回答

3

原子应该交换不是:点击数

(swap! app-state update :click-count inc) 
+0

哇..我正在尝试(swap!@ app-state update-in [:click-count] inc),但不起作用。你能告诉我,为什么@符号不是必需的吗? – Ampersanda

+1

用@你只能得到原子的当前状态,改变你必须交换原子本身的状态。 –

+0

非常感谢.. – Ampersanda