Я хотел бы отобразить вывод html следующего объекта:
(defn search-input [_ owner]
(reify
om/IInitState
(init-state [_]
{:text nil})
om/IRenderState
(render-state [this state]
(dom/input
#js {:type "text"
:value (:text state)
:className "form-control"
:onChange (fn [event] (handle-change event owner state))}))))
В om.dom есть метод render-to-str. Но если я наберу
om.dom/render-to-str
в реплике ClojureScript все, что я получаю, равно нулю. И вызов om.dom/render-to-str дает соответствующее сообщение об ошибке.
TypeError: 'undefined' is not an object (evaluating 'om.dom.render_to_str.call')
Странная вещь: завершение кода в repl дает мне вызов render-to-str.
Хорошо, проблема с om.dom/render-to-str, возвращающим nil, решена. Проблема заключалась в том, что я подключился не к реальному аналогу браузера, а к безголовому аналогу. Поэтому index.html не был загружен, и поэтому не был загружен react.js.
Но теперь звоню
(dom/render-to-str (search-input nil {}))
возвращается
"Error evaluating:" (dom/render-to-str (search-input nil {})) :as "om.dom.render_to_str.call(null,om_oanda.core.search_input.call(null,null,cljs.core.PersistentArrayMap.EMPTY));\n"
#<Error: Invariant Violation: renderComponentToString(): You must pass a valid ReactComponent.>
Error: Invariant Violation: renderComponentToString(): You must pass a valid ReactComponent.
После еще нескольких тестов я думаю, что мне нужно изменить вызов следующим образом:
(dom/render-to-str (om.core/build search-input a-cursor {}))
Итак, последний вопрос: как мне создать курсор.
deref
-ингa-cursor
как@a-cursor
?(dom/render-to-str (om.core/build search-input @a-cursor {}))
- person agent-j   schedule 13.07.2014