Я экспериментирую с 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]])))
Обратный отсчет таймера работает правильно, пока я не нажму кнопку сброса. После этого таймер начинает обратный отсчет в два раза быстрее. Каждый раз, когда я нажимаю кнопку сброса, обратный отсчет ускоряется.
Как я могу заставить таймер автоматически отсчитывать время при загрузке страницы, но не отсчитывать быстрее при нажатии кнопки сброса?