Cljs re-frame не показывает элемент, как ожидалось

Я экспериментирую с рефреймингом Cljs, в котором я пытаюсь показать ячейку в пользовательском интерфейсе с помощью функции ниже,

(defn cell
      [{:keys [id value on-change]}]
      [(r/adapt-react-class Box) {:key              id
                                  :type             :number
                                  :ml               2
                                  :content-editable (nil? value)
                                  :on-change        on-change
                                  :border           "2px solid #10AF34"
                                  :width            "30px"
                                  :height           "30px"
                                  :align            "center"}
       value])

Когда я пытаюсь вызвать метод непосредственно из метода, вызываемого для рендеринга, он работает,

(defn app
      []
      (cell {:id        "1-1"
             :value     nil
             :on-change #(js/alert "in cell 1 1")}))

Принимая во внимание, что когда я пытаюсь обернуть его в другой метод и вызвать, он не работает

(defn grid
      [data]
      (cell {:id        "1-1"
             :value     1
             :on-change #(js/alert "in cell 1 1")}))

(defn app
      []
      (grid (generate-data)))

Если кто-то хочет попробовать, grid/cell доступен здесь и функция приложения/рендеринга доступна здесь.


person Kannan Ramamoorthy    schedule 27.05.2021    source источник


Ответы (1)


Ваша проблема может быть связана с использованием [(r/adapt-react-class Box) …] — я не уверен, что это проблематично, но я бы либо def получил результат adapt-react-class и повторно использовал его, либо использовал синтаксис [:> Box …].

person Nico Schneider    schedule 12.06.2021