如何在 Clojure 中使用映射向量更新试剂原子

How to update a reagent atom with a vector of maps in Clojure

假设我有一个试剂原子,其映射向量如下:

(def my-atom (reagent/atom [{:id 1 :name "first name"}
                            {:id 2 :name "second name"}]))

如何将某个向量索引处的键值更新为:

[{:id 1 :name "first name"}
 {:id 2 :name "UPDATED second name"}]

我正在寻找类似 (update-my-atom 1 :name "UPDATED second name"):

的函数
(defn update-my-atom
  [vector-index key new-value]
  (swap! ??? - ???)

assoc-in 适用于任何关联结构的嵌套,包括向量内的映射*。因此,我建议使用 swap!assoc-in

  (swap! my-atom assoc-in [vector-index key] new-value)

*:与 update-in 一样,如果您想使用旧值的函数而不是 "this is the new value"。