clojurescript/agent を使用してテーブル本体を適切に並べるのに問題があります。これがhtmlで何をすべきか理解していないのか、それとも何なのか、実際にはわかりません...
現在、ループを使用してテーブル本体を表示しています
(defn table-body [list-of-maps]
[:tbody
(for [one-map list-of-maps]
[:tbody
[:tr
[:td (:key1 one-map)]
[:td (:key2 one-map)]
[:td (:key3 one-map)]
[:td (:key4 one-map)]
[:td (:key5 one-map)]
[:td (:key6 one-map)]
[:td (:key7 one-map)]]
[:tr
[:td (:key8 one-map)]]])])
問題は、いくつかの html 要素を使用して for の外側と for の内側の両方をグループ化する必要があることですよね? [:tbody] を両方で使用すると、[:thead] セクションとの位置合わせが台無しになります。tbody 以外の要素を使用すると、あらゆる種類の問題が発生します。for ループの [:tbody] と最後の [:tr] を削除すると、すべて問題ないように見えます。
編集:現在、問題をかなり絞り込んでいます。私のアプリの ajax は、テーブルに関連するデータを取得して参照解除します。この再レンダリングでは、テーブルのフォーマットが台無しになります。
Edit2: 問題が見つかりました。
(defn test-body [list-of-maps]
[:tbody
(for [one-map @list-of-maps]
[:tbody
[:tr
[:td (:key1 one-map)]
[:td (:key2 one-map)]
[:td (:key3 one-map)]
[:td (:key4 one-map)]
[:td (:key5 one-map)]
[:td (:key6 one-map)]
[:td (:key7 one-map)]]
[:tr
[:td (:key8 one-map)]]])])
(defn test-head []
[:thead
[:th "key1"]
[:th "key2"]
[:th "key3"]
[:th "key4"]
[:th "key5"]
[:th "key6"]
[:th "key7"]])
(defn test55 []
(let [list-of-maps (reagent/atom [])]
(js/setTimeout (fn [] (reset! list-of-maps '({:key1 "a1" :key2 "a2" :key3 "a3" :key4 "a4" :key5 "a5" :key6 "a6" :key7 "a7" :key8 "a8"} {:key1 "b1" :key2 "b2" :key3 "b3" :key4 "b4" :key5 "b5" :key6 "b6" :key7 "b7" :key8 "b8"}))) 3000)
[:table
[test-head]
[test-body list-of-maps]]))
マップのリストが再レンダリングされると、テーブルの配置が崩れます。