如何在 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"。
假设我有一个试剂原子,其映射向量如下:
(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"。