2015-10-27 5 views
1

Я пытаюсь научиться многому в одно и то же время, поэтому мой вопрос может быть немного от цели.Повторный кадр, жизненный цикл компонента реагента и figwheel

Я создал заново кадр шаблон проекта с Lein и у меня по умолчанию основной компонент:

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

Я хотел добавить слушателя событий для нажатия клавиши, но мне не удалось это сделать правильно: если я только установил (используя domina) (listen! ...) в :component-did-mount, на каждой перезагрузке figwheel добавляется новый ровный слушатель к старым (-ым). Если я установил unlisten! в component-will-unmount, я не получаю никакого результата при нажатии клавиши.

Что я заметил, так это то, что на каждой перезагрузке figwheel :component-will-unmount запускается сразу после :component-did-mount!

Что я делаю неправильно?

Спасибо!

ответ

1

Хорошо, я нашел свою ошибку. Мне пришлось называть реактивные «методы» with-meta.

Так, например:

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

Не используйте-мета. Очень неуклюжий. https://github.com/Day8/re-frame/wiki/Creating-Reagent-Components#form-3-a-class-with-life-cycle-methods –

+0

Умм спасибо за ссылку! Почему вы думаете, что это неуклюжие? Эта форма-3 выглядит ужасно подробней! –