简述 React key 是干嘛用的 为什么要加?key 主要是解决哪⼀类问题的?

React 中的 key 属性主要用于在列表或者数组中标识唯一的元素。在 React 进行 diff 算法比较两个列表或数组时,key 可以帮助 React 识别哪些元素是新创建的,哪些元素被移动了,哪些元素被删除了。

在没有 key 的情况下,React 会默认按照元素的顺序进行比较和更新。这样可能会导致不必要的元素销毁和创建,降低性能。如果我们提供了一个稳定的 key,React 就可以知道这个元素是被移动了,而不是被销毁然后重新创建。

除了性能优化,key 还有一个重要的作用是保持元素的状态。在 React 中,如果一个元素的 key 发生了改变,React 会认为这是一个全新的元素,会销毁旧元素并且创建新元素,旧元素的状态会被清除。如果我们想要保持元素的状态,我们需要提供一个稳定的 key。

举个例子,假设我们有一个输入框列表,我们希望在列表的开头插入一个新的输入框:

// 旧的元素:
const oldList = [
  <input key="1" />,
  <input key="2" />,
  <input key="3" />
];

// 新的元素:
const newList = [
  <input key="0" />,
  <input key="1" />,
  <input key="2" />,
  <input key="3" />
];

在这个例子中,如果我们不使用 key,React 会认为我们改变了前三个输入框的值,然后在末尾添加了一个新的输入框。这样就会丢失用户在前三个输入框中的输入。但是如果我们使用 key,React 就会知道我们只是在开头插入了一个新的输入框,用户在其他输入框中的输入不会丢失。

发表评论

后才能评论