# 列表 & Key

## 渲染多个组件

* 你可以通过使用 {} 在 JSX 内构建一个元素集合
* a key should be provided for list items 这是一个警告，意思是当你创建一个元素时，必须包括一个特殊的 key 属性

## Key

* key 帮助 React 识别哪些元素改变了，比如被添加或删除，因此你应当给数组中的每一个元素赋予一个确定的标识
* 一个元素的 key 最好是这个元素在列表中拥有的一个独一无二的字符串，通常，我们使用数据中的 id 来作为元素的 key
* 当元素没有确定 id 的时候，万不得已你可以使用元素索引 index 作为 key
* 如果列表项目的顺序可能会变化，我们不建议使用索引来用作 key 值，因为这样做会导致性能变差，还可能引起组件状态的问题
* 如果你选择不指定显示的 key 值，那么 React 将默认使用索引引用作为列表项目的 key 值
* 元素的 key 值只有放在就近的数组上下文中才有意义
* 一个好的经验法则是：在 map() 方法中的元素需要设置 key 属性
* key 只是在兄弟节点之间必须唯一
  * 它们不需要是全局唯一的，当我们生成两个不同的数组时，我们可以使用相同的 key 值
* key 会传递信息给 React 但不会传递给你的组件
