PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Для чего нужно значение key в v-for?

Основы языка

Значение `key` в `v-for` (Vue) нужно, чтобы Vue уникально идентифицировал элементы списка — для эффективного и корректного обновления DOM при изменении данных.

Зачем нужен

При рендере списка через v-for Vue сравнивает старый и новый список. key говорит, какой элемент «тот же самый» — тогда Vue переиспользует DOM и состояние, а не пересоздаёт:

<li v-for="user in users" :key="user.id">
  {{ user.name }}
</li>

Что даёт

  • Корректное обновление — Vue отслеживает, что добавилось/удалилось/переместилось.
  • Сохранение состояния — состояние компонента/инпута остаётся привязанным к нужным данным.
  • Производительность — переиспользование вместо пересоздания (алгоритм патчинга работает эффективнее).

Без key (или с индексом)

Vue по умолчанию использует «in-place patch» — обновляет элементы по позиции, что при вставке/удалении/сортировке путает состояние и вызывает баги:

<!-- Плохо при изменении порядка -->
<li v-for="(item, i) in items" :key="i">

Правила

  • Уникальные значения среди соседей.
  • Стабильные — id из данных, не индекс (при динамике) и не случайные значения.

Аналогия с React

:key в Vue играет ту же роль, что key в React — идентификация для reconciliation/patching.

Коротко для собеседования

:key в v-for уникально идентифицирует элементы списка для эффективного патчинга DOM: Vue переиспользует элементы и сохраняет состояние вместо пересоздания. Ключи должны быть уникальными и стабильными (id из данных). Без key или с индексом — баги состояния при изменении порядка. Аналог key в React.

Другие вопросы раздела