2017-09-20 33 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