我正在阅读http://reagent-project.github.io/
有一段代码:
(defn lister [items]
[:ul
(for [item items]
^{:key item} [:li "Item " item])])
^ {:key item}的含义是什么?我们为什么要这样做? [文档提到反射速度更快。]
答案 0 :(得分:4)
React需要识别各个列表项,以便它可以分辨哪些已更改。否则,React只能在重新渲染时丢弃整个列表。因此,您需要添加密钥。
在React(JSX)中:
<li key={item.whatever}>
{item.bar}
</li>
在试剂中,您将密钥作为元数据添加到打嗝表单。 Reagent负责设置React的密钥。
^{:key (.-whatever item)} [:li (.-bar item)]
您可以使用唯一标识列表元素内容的任何内容。在ClojureScript / Reagent中,您通常使用项目本身。