我发出一个http请求,并尝试将返回的val放入试剂组件中,如下所示:
[div
(a/take! (http/get "http://localhost:5000/data"))
#(into [:div]
(map render-method
(into [] (map (fn [res] (:name res)) (-> % :body :results))))
)
)
]
但是这可以理解是不可行的,因为a / take!本身不返回该组件。那么如何使异步获取请求与试剂一起工作?
您不能这样做。取而代之的是,您需要将结果存储在原子中,并且一旦加载,试剂将为您重新渲染。
(def data (reagent/atom nil))
(defn fetch-data []
(take! (http/get "http://localhost:5000/data") #(reset! data %)))
(defn names-list []
[:div
(doall (map :name @data))])
(defn my-component []
[:div
(if @data
[names-list]
[:div "loading"])])