Всегда ли нужно указывать key?
Продвинутые темы
Нет, `key` нужно указывать не всегда — только при рендере списков (массивов элементов). Одиночным элементам он не требуется.
Когда key обязателен
При рендере массива элементов через map:
{users.map((user) => (
<li key={user.id}>{user.name}</li>
))}React использует key для отслеживания элементов при reconciliation. Без него — предупреждение и возможные баги.
Когда key НЕ нужен
- Одиночные элементы — обычная разметка без списка:
<div>
<h1>Заголовок</h1> {/* key не нужен */}
<p>Текст</p>
</div>- Статичный список без изменений — key всё равно желателен, но индекс допустим.
Полезное исключение — key для ремоунта
key можно осознанно использовать вне списка для принудительного пересоздания компонента:
<Form key={userId} /> {/* смена key → ремоунт со сбросом состояния */}Требования к ключам
- Уникальные среди соседей.
- Стабильные (id из данных, не
Math.random()). - Индекс — только для статичных списков без переупорядочивания.
Коротко для собеседования
key нужен только при рендере списков (map), чтобы React отслеживал элементы при reconciliation. Одиночным элементам не требуется. Осознанное исключение — key для принудительного ремоунта компонента. Ключи должны быть уникальными и стабильными.