首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试剂:没有用元注释的组件函数调用的组件-did挂载钩子。

试剂:没有用元注释的组件函数调用的组件-did挂载钩子。
EN

Stack Overflow用户
提问于 2017-04-24 10:03:57
回答 1查看 309关注 0票数 0

奇怪的是,当我将组件定义为以钩子为元数据的函数时,就不会调用组件-生命周期函数(示例就像我看到的示例一样容易)。

代码语言:javascript
复制
(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而不是函数:

代码语言:javascript
复制
(def my-compo
  (with-meta inner-compo
             { :component-did-mount  my-callback })
  )

那就很好了-很奇怪。

如果有人能解释原因呢?

你好,弗里克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 15:40:21

第一次尝试不起作用,因为元信息对应于返回值(从外部无法看到),而在第二次尝试中,它对应于值本身(并且可以看到)。

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

代码语言:javascript
复制
  (reagent/create-class                 
       {:component-did-mount function...
        :component-will-mount function...
        :reagent-render render-function...

是的,它要详细得多,但至少你可以立即说出正在发生的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43585197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档