Gle*_*ift 3 javascript clojure clojurescript reagent re-frame
我有原子foo:
(defonce foo (r/atom "foo"))
Run Code Online (Sandbox Code Playgroud)
我有父组件:
(defn parent-component []
(js/setTimeout #(reset! foo "bar") 5000)
(child-component {:foo foo}))
Run Code Online (Sandbox Code Playgroud)
我有孩子组成部分:
(defn child-component [props]
(let [derefed (deref (:foo props))]
(fn []
[:div
[:p derefed]
[:p (deref (:foo props))]])))
Run Code Online (Sandbox Code Playgroud)
重置后只更新第二段foo.
为什么这样工作?
从有关Form-2组件的重新框架文档:https://github.com/Day8/re-frame/wiki/Creating-Reagent-Components#form-2--a-function-returning-a-function.
您需要在内部函数中再次重复外部函数参数:
(defn child-component [props]
(fn [props]
(let [derefed (deref (:foo props))]
[:div
[:p derefed]
[:p (deref (:foo props))]])))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |