【问题标题】:how do I remain the changed value in clojure reframe如何在 clojure reframe 中保留更改的值
【发布时间】:2020-06-10 08:06:54
【问题描述】:

假设我有一组按钮,如果用户单击了一个按钮,我希望它将值从“未单击”更改为“已单击”,因此我编写了此代码

(rf/reg-sub
 ::clicked-sub
 (fn [db _]
   (:clicked db)))

(rf/reg-event-db
 ::clicked-event
 (fn [db [_ clicked-numb]]
   (assoc db :clicked clicked-numb)))

(defn button-group [numbers]
  [:div
   (for [number numbers]
     ^{:key number}
     [:button
      {
       :value (if (= number @(rf/subscribe [::clicked-sub])) "clicked" "not clicked")
       :on-click (fn [e] (rf/dispatch [::clicked-event number]))
       }
      ]
     )
   ]
  )

问题是,在用户单击另一个按钮后,先前单击的按钮的值从“已单击”更改为“未单击”。我希望它保持每个点击按钮的点击值如何做到这一点

【问题讨论】:

    标签: clojurescript re-frame


    【解决方案1】:

    问题在于您在db 中的数据处理过于简单。您的事件总是用当前数字覆盖clicked 的值,因此查找/订阅总是只返回最新点击的数字。

    您可以做的是将数字/布尔值的哈希映射作为值存储到db 中的:clicked 键。然后,您的活动会将 (assoc-in) 号码更新为 true。当然,您还需要更改您对订阅的检查,以查看当前数字是否设置为 true。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 2017-10-06
      • 1970-01-01
      • 2021-03-14
      • 2019-10-06
      • 2020-02-01
      相关资源
      最近更新 更多