为什么不建议使用数字作为 key
一句话结论:真正的问题不是“数字”本身,而是“key 是否稳定且能代表身份”;把数组下标当 key 会在插入/删除/排序时导致错误复用与状态错位。
1. 数字 key 什么时候没问题
- 数字是稳定 ID:例如后端主键
id: 101,不会随顺序变化而变化 - 这种 key 本质上与字符串 ID 没区别
2. 为什么不建议用“数组下标”当 key
- 插入/删除会改变后续元素的下标 → key 变化 → React 误以为“人变了”
- 结果:DOM 复用错位、输入框光标跳、组件 state 跟着跑偏
3. 面试总结句
- “key 用来表达身份,不是表达位置;位置会变,身份应稳定”