根据我的项目,我正在向使用代理的状态的合适设计方向发展,同时仍然使用不同的原子(我可能会切换到单个原子,但目前正在尝试探索可能性的空间),我已经尝试在根组件的词汇上下文中设置所有状态,如下所示。我的想法是这个app-state是一个普通的clojure map,其中每个键的值都是一个试剂原子。
它接收一个attrs映射,这是一个属性(来自html元素上的data-属性),它的工作是初始化一个app-state映射,这个映射本身不是一个r/atom,但包含r/atoms。问题是,当在文件的顶部声明时,所有这些r/atom都是用defonce定义的,这就是我刚刚切换的地方,现在defonce语义丢失了& figwheel热重载被破坏。
在这种风格下设置状态时,有没有办法保留可重载的代码?
我不能将defonce放在let中,因为以后计算它时,它的计算结果将为零。
或者是我遗漏了什么模式。
(defn a-root-component [attrs]
(let [app-state {:some-state (r/atom (:some-state attrs))}]
(fn [attrs]
[some-component app-state])))https://stackoverflow.com/questions/64356712
复制相似问题