代码实现
import React from 'react';
const items = [1, 2, 3, 4];
function App() {
return (
<ul>
{items.map((item) => (
<li key={item}>{item}</li>
))}
</ul>
);
}
export default App;
为什么要给列表项添加 key 值
- 帮助 React 识别哪些元素改变了:当列表中的数据发生变化时,React 需要高效地更新 DOM。通过 key,React 可以快速确定哪些列表项是新的、哪些被修改、哪些被删除,从而最小化 DOM 操作,提高渲染性能。
- 保持列表项的状态:比如在一个包含输入框的列表中,每个输入框都有自己的输入状态。如果没有 key,当列表重新渲染时,React 可能会混淆输入框的状态,导致用户输入丢失或错乱。而 key 可以让 React 正确地识别每个列表项,维持其独立的状态。
key 值的选取原则
- 唯一性:在同一级列表中,每个 key 值必须是唯一的。如果使用数组的索引作为 key,当数组元素的顺序发生变化时,可能会导致 React 做出错误的 DOM 操作,因为索引会随着元素位置的改变而改变。所以一般优先使用数据中具有唯一性的标识作为 key,比如数据库中的 ID。
- 稳定性:key 值应该在列表项的生命周期内保持稳定。避免使用会频繁变化的值作为 key,否则 React 会认为列表项被删除并重新创建,这会导致不必要的性能开销。