我们假设我们的网格的值可以是0或1:
(def grid [[1 0 1]
[1 0 0]
[1 0 1]])
现在我想使用列表理解将grid
转换为类似HTML的Hiccup格式:
(defn cell-component [is-it-1 key]
^{:key key} [:td (if (= is-it-1 1) {:class "is-it-1"})])
(defn grid-html []
([:table
[:tbody
(for [row grid]
^{:key row} [:tr
(for [cell row]
(cell-component cell how-i-can-generate-a-index?))])]]))
该表格生成正确但我对如何为unique index
制作td
没有任何想法。 how-i-can-generate-a-index?
应该是什么?
答案 0 :(得分:0)
您只需致电gensym
:
(cell-component cell (gensym))
这是一种通用的方法。但是,通常最好在数据中找到一些已经提供独特差异的属性。
如果您希望看到从0开始计数的数字,那么您可以编写自己的序列生成器:
(def uniq-key (atom -1))
(defn gen-key []
(swap! uniq-key inc))
上面第一次打电话给(gen-key)
时,你会回来0,第二次打1等。
答案 1 :(得分:0)
我建议定义接受props
和children
作为参数的试剂成分。
(defn my-li
[:keys [a-string]]
[:li
a-string])
(defn my-list
[{:keys [color]} & children]
[:ul
{:style {:background-color color}}
(map-indexed #(with-meta %2 {:key %1}) children)])
(defn thelist []
[my-list
{:color "#ccc"}
[my-li "one"]
[my-li "two"]])