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

clojurescript reagent swap! atom negate atom value

我试图反转试剂原子的值变化

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

没有任何反应,我怎样才能使 changeval = NOT(changeval)

swap!的第三个参数是一个函数。所以我猜应该是:

#(swap! changeval (partial not= changeval0))

我认为 changeval0 是一个拼写错误,您需要一个布尔值。在这种情况下,请查看 Piotrek 的回答。

检查 swap! 函数的签名:

(swap! atom f)

(swap! atom f x)

(swap! atom f x y)

(swap! atom f x y & args)

Atomically swaps the value of atom to be: (apply f current-value-of-atom args). Note that f may be called multiple times, and thus should be free of side effects. Returns the value that was swapped in.

因此要否定原子中的值(它与 Clojure 和 Reagent 的原子一样工作)使用 not 函数(在你的情况下不会有额外的参数,因为你将只使用当前原子值):

(def value (atom true))

(swap! value not)
;; => false

(swap! value not)
;; => true