2017-04-24 40 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

相关问题