目的:“^ {:key item}”

时间:2016-10-25 09:37:24

标签: reactjs clojure

我正在阅读http://reagent-project.github.io/

有一段代码:

(defn lister [items]
  [:ul
   (for [item items]
     ^{:key item} [:li "Item " item])])

^ {:key item}的含义是什么?我们为什么要这样做? [文档提到反射速度更快。]

1 个答案:

答案 0 :(得分:4)

React需要识别各个列表项,以便它可以分辨哪些已更改。否则,React只能在重新渲染时丢弃整个列表。因此,您需要添加密钥。

在React(JSX)中:

<li key={item.whatever}>
  {item.bar}
</li>

在试剂中,您将密钥作为元数据添加到打嗝表单。 Reagent负责设置React的密钥。

^{:key (.-whatever item)} [:li (.-bar item)]

您可以使用唯一标识列表元素内容的任何内容。在ClojureScript / Reagent中,您通常使用项目本身。