Почему использование индекса массива в качестве key является антипаттерном в React?

Использовать индекс массива в качестве ключа (key) в React не следует, когда порядок элементов может измениться, или когда элементы могут добавляться, удаляться или перемещаться.

Короткий ответ

Что ответить на собеседовании

Использовать индекс массива в качестве ключа (key) в React не следует, когда порядок элементов может измениться, или когда элементы могут добавляться, удаляться или перемещаться. Это связано с тем, что React использует ключи для оптимизации повторного рендеринга, и если ключи — это просто индексы, то при изменении порядка элементов React может неправильно сопоставить компоненты, что приведёт к багам, например, к неправильному сохранению состояния компонентов.

Подробный разбор

Ответ с пояснениями

Использовать индекс массива в качестве ключа (key) в React не следует, когда порядок элементов может измениться, или когда элементы могут добавляться, удаляться или перемещаться. Это связано с тем, что React использует ключи для оптимизации повторного рендеринга, и если ключи — это просто индексы, то при изменении порядка элементов React может неправильно сопоставить компоненты, что приведёт к багам, например, к неправильному сохранению состояния компонентов.

Пример ситуаций, когда не стоит использовать индекс как ключ:

  • Сортировка списка.
  • Добавление или удаление элементов в середине массива.
  • Динамическое обновление списка.

В таких случаях лучше использовать уникальные и стабильные идентификаторы, например, id из данных.

// Плохо:
items.map((item, index) => <Item key={index} data={item} />)

// Хорошо:
items.map(item => <Item key={item.id} data={item} />)

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку