key是个属性,react利用key来识别组件,它是一种身份标识的标志。通常,我们使用数据的id来作为元素的key;但是当元素没有id时,可以使用元素索引index作为key。但是一般不建议使用索引来用作key值,这样会导致性能变差,可能还会引起组件状态的问题。
有了key值,可以根据key来决定是销毁还是更新。
- key相同,如果组件的属性发生变化,react只更新组件对应的属性,没有变化则不更新
- key不相同,react先销毁该组件,再重新创建该组件
元素的key只有放在就近的数组上下文才有意义
为什么只有数组中的元素需要有唯一的key,而其他的元素不需要呢?答案是:react有能力辨别出,更新前后元素的对应关系。
为了组件内部逻辑的清晰,应该在任何复杂的有状态组件上使用key属性,才能在适合的适合触发组件的销毁与重建,组件才能有一个健康的生命周期。