2015-08-26 7 views
1

Только что начал использовать повторный кадр и столкнулся с трудностями. У меня есть компонент (Form-2), который принимает один ARG, создает reaction на его основе, и возвращает визуализатор как этотЗависит как от входного аргумента, так и от производной коллекции в повторном кадре

(defn some-list [some] 
    (let [bars (rf/subscribe [:bars (:id @some)])] 
    (fn [some] 
     [:ul 
     (for [[id b] bars] 
     [:li (:name b)])]))) 

Позже я называю его

(defn some-dashboard [some] 
    [:div.some-dashboard 
    [some-list some]]) 

some реакция. Здесь, когда я звоню some-list с [], он связывается с начальным some, таким образом, bars всегда имеют одинаковые (:id @some) в подписке и получают одинаковое значение из подписки.

Не могли бы вы рассказать мне, как это исправить? Заранее спасибо.

ответ

1

Найдено ответов на clojure слабое сообщество.

Оказалось, что это динамическая подписка https://github.com/Day8/re-frame/pull/108. PR идет.

Обход является:

  • поместить данные в @some в приложение-дб ....
  • поэтому он может быть доступен в самом обработчике

Код

(defn some-list [] 
    (let [bars (rf/subscribe [:bars])] 
    (fn [] 
     [:ul 
     (for [[id b] @bars] ;; <---------- remember the @ 
     [:li (:name b)])]))) 

(register-sub 
    :bars 
    (fn [db _] 
    (let [some (reaction (get @db :some)] 
     (reaction (get-in @db [:bar @some])))) 
;; we should NOT be using the name "some" ... I'm only doing it so it relates back to your question 

Так динамические подписи разрешат эту проблему (взято из here). Исходный пример найден here.

(defn some-list [some] 
    (let [some-id (reaction (:id some)) 
     bars (rf/subscribe [:bars] [some-id])] 
    (fn [some] 
     [:ul 
     (for [[id b] @bars] 
     [:li (:name b)])]))) 

И вот как абонент смотрит (это совершенно идентичен коду из коммита выше):

(rf/register-sub 
    :bars 
    (fn [db _ [some-id]] 
    (reaction (get-bars @db some-id)))) 

Примечание для себя: не забудьте удалить сгенерированные JS файлы при переходе к следующему ПЕРЕУСТАНОВКИ рамка версия.

 Смежные вопросы

  • Нет связанных вопросов^_^