我一直在嘗試解決這個錯誤一段時間,但它沒有迴避。這個問題與for循環有關,因爲當我將它移除時,對組件的調用被限制爲一個,但是對它繼續被調用。這導致我想消除的無限POST調用。簡而言之,組件不斷被渲染,而不僅僅是加載頁面。ClojureScript試劑組件不斷刷新,導致多次POST呼叫
(defn get-messages []
"Gets the messages from the server"
(let [response (r/atom "")]
(fn []
(POST "/get" {:handler #(reset! response %)})
[:div
(for [item @response]
[:div
[:h3.you (first item)]
[:p (second item)]])])))
我把它就像任何其他成分:
(defn test []
[:div
[get-messages]])
該職位得到的數據只是
(["Bill" "What is the weather today?"] ["Jim" "The weather is warm"])
編輯
我意識到了錯誤我與懶惰seq沒有任何關係。對不起,不清楚,但錯誤是與呈現一個對象與POST在其中。 AJAX被不斷調用。要解決它,我包括:
(:require-macros [cljs.core.async.macros :as cam])
[clojure.core.async :as ac]
然後我用這周圍的POST:
(cam/go
(<! (ac/timeout 500))
(POST "/ajax/get-message" {:handler #(reset! response %)}))
謝謝大家的耐心。
乾杯, 馬特
間距主要是因爲我很難用正確的縮進在Stackoverflow中輸入它。我會嘗試一下vec。 – phlie
@phlie非常容易理解,但是如果您希望其他人能夠讀取您的代碼,這很重要 - 我最大的疑問就是,您似乎沒有關閉最後一行的'for'循環(剩下9個) parens在你的代碼中,只有8個正確的parens)...不知道這是否是複製/粘貼錯誤,但... – Josh
@phlie再次查看代碼後,我意識到我犯了一個錯誤,在上面修改它。以前的結果是一個雙嵌套向量,當你想要上面的扁平結構時,我想。請驗證上面的輸出具有您想要的結構,我認爲它的確如此 - 如果是這樣,那麼上面的代碼現在是正確的。 – Josh