[英]Putting data in a table in Clojurescript reagent
我正在構建ClojureScript應用程序,但在使用試劑填充數據表時遇到了麻煩。 我遇到的兩個問題是警告形式的噸
Every element in a seq should have a unique :key
而且,一旦我調用執行渲染的函數,它就會正確渲染,那么我的整個頁面就會凍結,重新加載頁面是修復它的唯一方法。 這是我的兩個功能:
(defn foo
[]
[:table
(for [i (range 10)]
[:tr (for [j (range 3)]
[:td (str "Row " i ", Col " j)])])])
當我調用以下命令時,我得到警告並且頁面凍結,盡管它確實可以正確呈現:
(reagent/render [foo] (dom/getElement "results"))
我是否以錯誤的方式處理數據填充過程? 有更容易的方法嗎?
您得到的警告是由於試劑要求沿這些行創建的動態元素具有唯一的鍵值。 有兩種方法可以解決此問題。 您需要注意的另一件事是使用for的可能問題,因為它會生成惰性序列。 在這種情況下,這對您很有效,但是在重新渲染時會產生一些細微的問題。
我的建議是創建一個函數來渲染td元素,並在渲染之前添加前綴
^{:key (str i j)} [:td (str "Row " i ", Col " j)]
(str ij)將為每個td元素創建一個唯一鍵。 我發現有用的另一件事是用於
(into [:tr]
(for [j (range 3)]
^{:key (str i j)} [:td ....])))
我一直在使用試劑開發自己的應用程序。 它不是很好的代碼,它仍然需要大量重構,但是我已經完成了像這樣的表格,分頁表格和一些其他試劑組件,例如標簽,側邊欄菜單等。可以在我的網站上找到它。 github arcis project如果沒有別的,它應該給你一些想法
在重新構架Wiki上也有一些關於試劑及其渲染方法的良好文檔,以及一些微妙的“陷阱”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.