ReactWork
为什么 React 列表里不建议用数组下标当 key?
用下标当 key 时,列表重排或增删会导致子组件状态挂错节点,出现输入框错位、动画乱跳等问题。
keyreconciliationlist
Updated Mar 30, 2026
短答案
key 用来标识「同一项」在多次渲染中是否还是同一个。用 index 时,中间插入/删除会让后面的项 index 全变,React 会误复用错误子树,本地 state/DOM 就对不上。稳定 key 应用内容 id 或稳定业务主键。
展开说明
和 fiber 协调的关系、什么情况下 index 勉强可用(静态只读列表)、和 key 变化会 remount 等。
真实场景
表格可编辑行、可拖拽排序、条件渲染子列表时,用 index 做 key 后用户改到一半,光标跑到别的行。
追问
- key 变了会发生什么?
- 为什么不要用随机数当 key?
- Fragment 要不要 key?