Reactjs 试剂:未使用元注释组件函数调用组件挂载挂钩

Reactjs 试剂:未使用元注释组件函数调用组件挂载挂钩,reactjs,clojurescript,reagent,Reactjs,Clojurescript,Reagent,奇怪的是,当我将一个组件定义为一个钩子作为元数据的函数时,我的组件生命周期函数没有被调用(这个例子很简单,就像我在周围看到的例子一样) 当我使用试剂/create class创建组件时,它工作正常。我正在使用试剂0.6.1 找到的解决方案:您需要将组件定义为变量而不是函数: (def my-compo (with-meta inner-compo { :component-did-mount my-callback }) ) 然后它工作得很好-真的很奇怪 如

奇怪的是,当我将一个组件定义为一个钩子作为元数据的函数时,我的组件生命周期函数没有被调用(这个例子很简单,就像我在周围看到的例子一样)

当我使用
试剂/create class
创建组件时,它工作正常。我正在使用试剂
0.6.1

找到的解决方案:您需要将组件定义为变量而不是函数:

(def my-compo
  (with-meta inner-compo
             { :component-did-mount  my-callback })
  )
然后它工作得很好-真的很奇怪

如果有人能解释为什么


关于,fricke,第一次尝试失败,因为元信息对应于返回值(从外部看不到),而在第二次尝试中,它对应于值本身(可以看到)

通常,当您在
render
之外有任何方法时,最好使用完整的组件语法:

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

是的,它要详细得多,但至少你可以立即说出发生了什么。

那么这是否意味着分析是在试剂读取
[my combo]
时进行的呢。只有当它被挂载时,才会被调用,这对于添加react.js钩子来说已经太晚了?我认为是这样的。
  (reagent/create-class                 
       {:component-did-mount function...
        :component-will-mount function...
        :reagent-render render-function...