簡體   English   中英

試劑不會在let內部使用deref-rerender組件

[英]Reagent doesn't rerender component with deref-ing inside of let

我有原子foo

(defonce foo (r/atom "foo"))

我有父組件:

(defn parent-component []
  (js/setTimeout #(reset! foo "bar") 5000)
  (child-component {:foo foo}))

我有孩子組成部分:

(defn child-component [props]
  (let [derefed (deref (:foo props))]
    (fn []
      [:div
       [:p derefed]
       [:p (deref (:foo props))]])))

重置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))]])))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM