2017-09-21 17 views
3

하자의 내부 DEREF이 - 보내고하지 다시 쓰게 구성 요소를 수행합니다시약 내가 원자 <code>foo</code>이

(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을 재설정 한 후 두 번째 단락 만 업데이트됩니다.

왜 그렇게 작동합니까?

답변

4

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))]]))) 
+0

주의 구독 : https://github.com/Day8/re-frame/issues/218 –