我正在尝试几乎没有经验的 Clojure 和 Reagent,试图制作一个简单的计时器。
(defn reset-component [t]
[:input {:type "button" :value "Reset"
:on-click #(reset! t 60)}])
(defn countdown-component []
(let [seconds-left (atom 60)]
(fn []
(js/setTimeout #(swap! seconds-left dec) 1000)
[:div.timer
[:div "Time Remaining: " (show-time @seconds-left)]
[reset-component seconds-left]])))
在我按下重置按钮之前,计时器倒计时似乎可以正常工作。之后,计时器开始以两倍的速度倒计时。每次我按下重置按钮时,它都会更快地倒计时。
如何让计时器在页面加载时自动倒计时,但在单击重置按钮时不会更快地倒计时?