如何从试剂原子向量中删除 key/value?

How to remove key/value from reagent atom vector?

我有一个试剂原子,它由 key/value 个图的矢量组成。

如何删除 key/value 键值对恰好是 UUID?我试过:

(交换!state/items (dissoc @state/items id))

但我得到:

core.cljs:270 未捕获错误:没有为 cljs 类型定义协议方法 IMap.-dissoc。core/LazySeq: ({:id #uuid "e1f9341f-bc02-4c17-a594-b9b5ede72214", :description "foo bar"})

我认为你需要使用 remove。所以这应该有所帮助:

(def data  [{:id "e1f9341f-bc02-4c17-a594-b9b5ede72214" :description "Foo"} {:id "e1f9341f-bc02-4c17-a594-b9b5ede72214" :description "Bar"}] )
(remove #(= (:id %) "e1f9341f-bc02-4c17-a594-b9b5ede72214") data)
;; => ()

swap!函数采用旧值,returns采用更新值。所以上面的 data 将是旧值。您传递给 swap! 的函数将如下所示:

(fn [old]
  (remove #(= (:id %) "e1f9341f-bc02-4c17-a594-b9b5ede72214") old))