我正在尝试进入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
空映射,从而防止试图呈现在(om/build model-stats-view)
呼叫nil
设置一个初始状态?
你可以使用'(get data:stats {})'? – cfrick
@cfrick工作。谢谢。但是我会留下来看看是否有更多类似“类似React”的解决方案或者IInitState或其他东西。 – tolgap