在 React 中应用 key 属性是为了在 Virtual DOM 的更新过程中,帮忙 React 辨认哪些元素是曾经存在的、哪些是须要新增的、哪些是须要删除的。应用 key 的目标是让 React 在进行 DOM 的和谐(Reconciliation)时可能更加高效的进行操作。
然而,如果在列表渲染中应用 index 作为 key,就会有一些问题。具体来说:
- 如果列表产生了增删,本来的 index 和新的 index 就不统一了,这会导致 React 谬误的辨认出曾经存在的元素,从而关联谬误的元素进行 DOM 操作。
- 如果在列表操作中,有两个不同的元素有雷同的 index,这也会导致 React 出错。
- 如果列表中的元素有从新排序,应用 index 作为 key 的话,React 就会认为元素的内容没有变动,就不会更新 DOM,这就导致了一些潜在的显示问题。
因而,为了防止这些问题,倡议应用惟一的、稳固的字符串或者数字作为 key,例如元素的 ID 或者其余惟一的标志符。这样能够保障 React 可能正确的进行 DOM 操作,从而进步利用的性能和可靠性。