2017-04-24 41 views
0

奇怪的是,當我使用鉤子作爲元數據將組件定義爲函數時,我的組件生命週期函數未被調用(該示例非常簡單那 - 就像在我看到的例子中)。試劑:component-did-mount hook沒有用元註釋組件函數調用

(defn my-callback [this] (println (.-innerHTML (reagent/dom-node this)))) 

(defn inner-compo [] 
    [:p "content"]) 

(defn my-compo [] 
    (with-meta inner-compo 
      { :component-did-mount my-callback }) 
) 

當我創建組件reagent/create-class它工作正常。我正在使用試劑0.6.1

發現

解決方案:您需要定義組件作爲無功,而不是一個功能:

(def my-compo 
    (with-meta inner-compo 
      { :component-did-mount my-callback }) 
) 

然後正常工作 - 非常奇怪。

如果有人能解釋爲什麼?

問候,FRICKE

回答

1

第一次嘗試沒有成功,因爲元信息對應一個返回值(不能從外面看到的),而在第二次嘗試它對應於本身的價值(可以可見)。

通常當你有這將是更好render身邊的任何方法來求助於全成分語法:

(reagent/create-class     
     {:component-did-mount function... 
     :component-will-mount function... 
     :reagent-render render-function... 

是的,它是更冗長,但至少你可以立即說這是怎麼回事上。

+0

所以這意味着分析是在試劑閱讀'[my-combo]'時完成的。只有當它被掛載時,它纔會被調用,這對於添加react.js掛鉤來說已經太遲了。 – fricke

+0

我認爲是這樣。 – akond

相關問題