clojure:试剂:如何创建反应原子
clojure: reagent: how to create reaction atom
Github/Google
我知道 Google/Github 上有答案。 (我知道这是可能的,因为我在过去的某个时候阅读了它的文档。)但是,我似乎根本找不到它。
一般背景
Clojure Reagent 具有 "r/atom" 形式
(def some-input (r/atom ""))
然后,如果我定义一个组件,例如:
(fn []
[:div @some-input])
它具有 属性 当输入原子改变时,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)
我记得这叫做 "reaction atom" 之类的 -- 但我找不到它。
真题:
我在里面放了什么:
(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")))
复制问题的答案只是为了将问题标记为已解决:
(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")))
Github/Google
我知道 Google/Github 上有答案。 (我知道这是可能的,因为我在过去的某个时候阅读了它的文档。)但是,我似乎根本找不到它。
一般背景
Clojure Reagent 具有 "r/atom" 形式
(def some-input (r/atom ""))
然后,如果我定义一个组件,例如:
(fn []
[:div @some-input])
它具有 属性 当输入原子改变时,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)
我记得这叫做 "reaction atom" 之类的 -- 但我找不到它。
真题:
我在里面放了什么:
(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")))
复制问题的答案只是为了将问题标记为已解决:
(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")))