我知道Google / Github的答案就在那里。 (我知道这是可能的,因为我在过去的某些时候阅读过它的文档。)但是,我似乎根本找不到它。
Clojure Reagent有一个" r / atom"形式
(def some-input (r/atom ""))
然后,如果我定义一个组件,比如:
(fn []
[:div @some-input])
它具有以下属性:当some-input atom更改时,div会更新。
Clojure Reagent有一个名为" reaction"的东西,我们可以定义:
(def ra (r/atom ""))
(def rb ... I HAVE NO IDEA WHAT TO PUT HERE ...)
具有@rb =(f @ra)的属性 - 这样每当ra更新时,rb会自动更新为(f @ra)
我相信这被称为"反应原子"或某事 - 但我无法找到它。
我在:
中加入什么(def rb ... I HAVE NO IDEA WHAT TO PUT HERE ...)
它已记录https://github.com/Day8/re-frame (另一个非常酷的项目,也使用Reagent)
具体的例子是:
(def app-db (reagent/atom {:a 1})) ;; our root ratom (signal)
(def ratom2 (reaction {:b (:a @app-db)})) ;; reaction wraps a computation, returns a signal
(def ratom3 (reaction (condp = (:b @ratom2) ;; reaction wraps another computation
0 "World"
1 "Hello")))
答案 0 :(得分:3)
从问题中复制答案只是为了将问题标记为已解决:
(def app-db (reagent/atom {:a 1})) ;; our root ratom (signal)
(def ratom2 (reaction {:b (:a @app-db)})) ;; reaction wraps a computation, returns a signal
(def ratom3 (reaction (condp = (:b @ratom2) ;; reaction wraps another computation
0 "World"
1 "Hello")))