我正在做我的試劑應用程序的Ajax GET,從數據庫中加載一些東西。Ajax GET與試劑
我不完全確定如何將這種ajax調用的結果獲得到我的頁面的最佳方式,考慮到如果我將它放在一個原子中,那麼Reagent會在原子解除引用時自動重新渲染組件,這意味着我得到無限的ajax調用序列。
對於一些代碼,
(def matches (atom nil))
(defn render-matches [ms]
(reset! matches (into [:ul] (map (fn [m] ^{:key m}[:li m])
(walk/keywordize-keys (t/read (t/reader :json) ms)))))
這個功能基本上創建了一個[:ul [:li "Stuff here"] [:li "And here"]]
,我想我的網頁,現在有下面的代碼顯示。
(defn standings-page []
(GET "/list-matches"
{:handler render-matches})
@matches)
如何觸發'GET'請求?在頁面加載?或者只有當您需要該試劑組分時?還是用戶操作?你在這裏收集了很多東西。我只會將數據(不是打嗝)放入原子中,並將列表呈現在「榜單頁面」中。如果您只需申請一次,您可以查看「延遲」並參考「排名頁面」中的延遲。但是,這又取決於你的用例(因此前幾個問題) – ClojureMostly
是的,不要直接從渲染調用副作用代碼。要麼從一個生命週期的functin(像will-mount或did-mount)或者在試劑組件init中那樣做(如Michiel Borkent的答案所示)。 – Dan