正确操作状态试剂
我刚学试剂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
原子应该交换不是:点击数
(swap! app-state update :click-count inc)
哇..我正在尝试(swap!@ app-state update-in [:click-count] inc),但不起作用。你能告诉我,为什么@符号不是必需的吗? – Ampersanda
用@你只能得到原子的当前状态,改变你必须交换原子本身的状态。 –
非常感谢.. – Ampersanda
有用的文档:https://clojuredocs.org/clojure.core/swap! – Bill
我读过了,但是谢谢:) – Ampersanda