Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: index, key, virtual, dom

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

Вопрос проверяет понимание того, как Virtual DOM сопоставляет элементы списка и какие проблемы возникают при нестабильных ключах.

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

Использование index как key приводит к неправильному сопоставлению элементов при изменении массива. При добавлении, удалении или сортировке элементов Vue считает, что элементы просто «переехали». Это может ломать состояние компонентов, input-поля и анимации. Ошибки появляются не сразу, а при изменениях данных. Поэтому index допустим только для статичных списков.

Длинный ответ

Проблема использования index как key связана с тем, что индекс отражает позицию элемента, а не его сущность.

Основная причина

key должен идентифицировать элемент данных, а не его положение в массиве. Индекс меняется при любых операциях со списком, даже если сами элементы остались теми же.

Что происходит при изменении списка

При использовании index как key:

  • Vue переиспользует DOM-узлы не для тех данных

  • состояние дочерних компонентов «переезжает»

  • значения input могут оказаться привязанными к другим элементам

Когда index допустим

Использование index возможно, если:

  • список полностью статичен

  • элементы никогда не добавляются и не удаляются

  • порядок элементов не меняется

Рекомендуемая альтернатива

Лучше использовать:

  • уникальный id из данных

  • стабильный идентификатор, не зависящий от позиции

Краткий вывод

Index как key опасен для динамических списков и может приводить к трудноуловимым багам.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#index

#key

#virtual

#dom

Подпишись на React Developer в телеграм