clojurescript 试剂互换!原子否定原子值

blu*_*ade 2 clojurescript reagent

我试图反转试剂原子的值 changeval

(def changeval(reagent/atom 0))
...
...
[:input {:type "button" :value "Invert!"
            :on-click #(swap! changeval(not= changeval0 ) ) }]
Run Code Online (Sandbox Code Playgroud)

什么也没发生,我怎样才能使 changeval = NOT(changeval)

Pio*_*dyl 5

检查swap!函数的签名:

(swap! atom f)

(swap! atom f x)

(swap! atom f x y)

(swap! atom f x y & args)

以原子方式将 atom 的值交换为: (apply f current-value-of-atom args)。请注意, f 可能会被多次调用,因此应该没有副作用。返回换入的值。

因此,要否定原子中的值(它与 Clojure 和 Reagent 的原子的工作原理相同)使用not函数(在您的情况下将没有额外的参数,因为您将只使用原子的当前值):

(def value (atom true))

(swap! value not)
;; => false

(swap! value not)
;; => true
Run Code Online (Sandbox Code Playgroud)