レンダリングする前にサーバーからデータを要求する必要があるコンポーネントがあるとします。
私が今持っているのは、cljs-ajax
ライブラリのようなものです:
(def data (r/atom nil))
(defn component [id]
(r/create-class {:reagent-render simple-div
:component-did-mount (partial get-data id)}))
(defn get-data [id]
(GET (str "/api/" id)
{:handler init}))
(defn init [response]
(let [data1 (:body response)
data2 (compute data1)
data3 (compute2 data2)]
(reset! data (compute3 data1))
(.setup @data data1)
(.setup2 @data data2)
(.setup3 @data data3))
関数は、setup
副作用のあるいくつかの外国の JS ライブラリ関数です。
これは機能しますが、これがコールバックを行う正しい方法だとは思いません。言うまでもなくGET
、最初に取得したデータに基づいて他のデータが必要であり、次にそれに基づいて他のデータが必要な場合、コールバックの非常に厄介なチェーンになります。
試薬/clojurescriptでこの種のajaxリクエストを行うためのより良い、クリーンな方法はありますか?