當在Clojurescript I上試用this post時,我嘗試了不同的方法來實現timer-component
組件。我第一次嘗試,但是,沒有工作:爲什麼組件在試劑中不能正確呈現?
(defn timer-component []
(fn []
(let [seconds-elapsed (r/atom 0)]
(js/setTimeout #(swap! seconds-elapsed inc) 1000)
[:p (str "Expired time: " @seconds-elapsed)])))
由於調試日誌聲明顯示計時器仍經常叫和seconds-elapsed
變量仍正常更新。但是,顯示屏未更新,組件始終顯示「過期時間:0」。
與博客文章中的代碼示例相比,我的組件交換fn
和let
聲明,並且此修改似乎阻止正確顯示,但無法正確更新組件。我的期望是組件既可以更新也可以正確顯示,或者既不更新也不顯示。
我的問題是爲什麼會發生這種情況?這是否是Reagent中的錯誤或者是我濫用API?