Я пытаюсь попасть в ClojureScript и Om. Есть конкретный случай, который заставляет меня бегать по кругу.Установить начальное состояние для отсутствующего ключа в данных компонента
У меня есть компонент, который сначала отображается без ключа.
(defn model-view [data owner]
(reify
om/IWillMount
(will-mount [_]
(om/transact! data [:stats] (fn [] {}))
(go
(let [response ((<! (api/get-stats (data :id))) :body)
stats (:stats response)]
(om/update! data [:stats] stats))))
om/IRender
(render [_]
(dom/div nil
(dom/h3 nil (data :title))
;; Here I want to use the :stats key in data that I
;; queried for in IWillMount, but its not present
;; the first time this model is rendered. It's only present
;; AFTER IWillMount has ran.
(om/build model-stats-view (data :stats)))))
В первый раз этот компонент называется, ключ :stats
просто нет в data
. Вот почему я делаю вызов API, чтобы получить его статистику. Но React по-прежнему вызывает функцию render
, поэтому компонент падает.
Как я могу установить начальное состояние в этом компоненте, который дает data
пустой карту под названием :stats
, предотвращая тем самым пытаясь оказать nil
в (om/build model-stats-view)
вызова?
Вы можете просто использовать '(получить данные: stats {})'? – cfrick
@cfrick Это работает. Благодарю. Но я оставлю это, чтобы узнать, есть ли более «Реакт-подобное» решение с 'IInitState' или что-то в этом роде. – tolgap