当在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?