正确处理试剂中的状态

Amp*_*nda 5 clojure clojurescript reagent

我只是在Clojurescript中学习Reagent,我只是在遵循一些教程,但也许我错过了一些我有该州代码的东西

(defonce app-state (atom {:text "Hello Chestnut!" :click-count 0}))
Run Code Online (Sandbox Code Playgroud)

和渲染的视图

(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)}]
   ]
  )
Run Code Online (Sandbox Code Playgroud)

我试图在按下按钮时增加状态,但是在控制台上却收到此错误

错误:无协议方法ISwap.-swap!为类型编号定义:0

Min*_*yen 5

原子不应该交换:click-count

(swap! app-state update :click-count  inc)
Run Code Online (Sandbox Code Playgroud)

  • 使用@只能获取原子的当前状态,要更改状态,您必须交换原子本身。 (2认同)