this postをClojurescriptの試薬で熟読すると、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の誤用ですか?