重构、试剂成分生命周期和飞轮
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! ...)})
我想同时学习很多东西,所以我的问题可能有点偏离目标。
我用 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
.
因此,例如:
(with-meta myComponent {:component-did-mount #(ev/listen! ...)
:component-will-unmount #(ev/unlisten! ...)})