奇怪的是,当我将一个组件定义为一个钩子作为元数据的函数时,我的组件生命周期函数不会被调用(这个例子就像在我看到的例子中一样容易)。
(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
。
找到解决方案: 您需要将组件定义为Var而不是函数:
(def my-compo
(with-meta inner-compo
{ :component-did-mount my-callback })
)
然后它运作正常 - 非常奇怪。
如果有人能解释原因?
问候,fricke
答案 0 :(得分:1)
第一次尝试不起作用,因为元信息对应于返回值(无法从外部看到),而在第二次尝试中,它对应于值本身(并且可以看到)。
通常当你在render
旁边有任何方法时,最好采用完整的组件语法:
(reagent/create-class
{:component-did-mount function...
:component-will-mount function...
:reagent-render render-function...
是的,它更冗长,但至少你可以立即说明发生了什么。