重构、试剂成分生命周期和飞轮

Re-frame, reagent component life cycle and figwheel

我想同时学习很多东西,所以我的问题可能有点偏离目标。

我用 lein 创建了一个 re-frame-template 项目,我有我的默认主要组件:

(defn main-panel []
  (let [name (subscribe [:name])]
    (fn [] [:div [:h1 @name]])))

我想为按键添加一个事件侦听器,但我无法正确地做到这一点:如果我只设置(使用 domina):component-did-mount 中的 (listen! ...),在每个figwheel reload 一个新的偶数侦听器被添加到旧的侦听器中。如果我在 component-will-unmount 中设置 unlisten!,我在按键时没有得到任何结果。

我注意到,每次重新加载 figwheel 时,:component-will-unmount 都会在 :component-did-mount!

之后立即触发

我做错了什么?

谢谢!

好的,我发现了我的错误。 我不得不用 with-meta.

调用反应 "methods"

因此,例如:

(with-meta myComponent {:component-did-mount #(ev/listen! ...)
                        :component-will-unmount #(ev/unlisten! ...)})