Я пытаюсь реализовать поиск в Clojurescript с помощью реагента/рефрейма и семантического пользовательского интерфейса. Semantic-ui использует средство визуализации для предложений. Этот рендерер по умолчанию использует изображение, цену, заголовок, описание. Поскольку я хочу получить предложения по геокодированию, я хочу перечислить адреса. Это возвращаемые данные, которые я получаю. Я в основном хочу отображать имя, город и почтовый индекс в предложениях.
{:hits
[{:osm_type "W",
:name "Am Pfuhl",
:osm_value "residential",
:city "Berlin",
:postcode "12209",
:state "Berlin",
:osm_key "highway",
:extent [13.322584 52.4205878 13.3258975 52.419743],
:point {:lng 13.3241429, :lat 52.4201622},
:osm_id 103012039,
:country "Deutschland"}
:took 7}
Код, который я написал, не показывает мне никаких результатов. Я много пробовал, но я не знаю, как заглянуть в компонент, чтобы увидеть, изменяется ли его состояние и сохраняются ли результаты. Подписка дает мне результаты, когда я вызываю ее напрямую.
(def search (helper/component "Search"))
(def grid (helper/component "Grid"))
(def grid-row (helper/component "Grid" "Row"))
(defn on-search-change [event props]
(rf/dispatch [:get-geocode (:value (js->clj props :keywordize-keys true))]))
(defn on-result-select [event props]
(rf/dispatch [:geocode-selected]))
(defn get-geocode-results []
@(rf/subscribe [:geocode-results]))
(defn result-renderer [& meh]
(fn [meh]
[:div (str meh)]))
(defn geocode-component []
[:> grid
[:> grid-row
[:> search {:minCharacters 3
:loading (when (:geocode @(rf/subscribe [:loading])) )
:defaultValue "Berlin"
:selectFirstResult true
:onSearchChange on-search-change
:onResultSelect on-result-select
:resultRenderer result-renderer
:results get-geocode-results}]]])
Я был бы очень признателен за помощь в следующем: как узнать, правильно ли компонент сохраняет результаты? Как написать средство визуализации, которое просто отображает все результаты для отладки?
Спасибо и привет! Тимо
Изменить: решение на https://gist.github.com/TimoKramer/7e93758afb81dcad985fafccc613153a