Вопрос проверяет понимание различий между статическими и динамическими атрибутами в Vue-шаблонах.
Если передать строку в key без :, все элементы списка получат одинаковый ключ. Vue не сможет различать элементы между собой. Это ломает алгоритм обновления DOM. В результате возможны визуальные и логические ошибки. Такой key фактически бесполезен.
Во Vue наличие : перед key определяет, как интерпретируется значение.
Сравним два варианта:
<li v-for="item in items" key="id"></li>
<li v-for="item in items" :key="item.id"></li>
В первом случае key="id" — это обычная строка "id".
Во втором — значение берётся из данных.
Если все элементы имеют одинаковый key:
Vue считает их одним и тем же элементом
DOM-узлы переиспользуются некорректно
состояние компонентов путается
Проблема может проявиться только:
при изменении порядка элементов
при добавлении или удалении элементов
при работе с формами и анимациями
key без : превращается в строковый литерал и делает список логически некорректным.