У меня есть массив, который отображается как набор компонентов Vue с использованием v-for
. Мне нужно использовать :key=""
, иначе Vue пожалуется.
У моего массива нет уникальных идентификаторов, поэтому я использую индекс в качестве ключа
Моя петля
<card v-for="(item, index) in questions" :question="item" :key="index">{{item}}</card>
В массиве есть объекты, которые могут иметь одинаковое содержимое
[{name:"jimmy"}, {name:"billy bob"}, {name:"jimmy"}]
Проблема: как только я манипулирую массивом, результаты становятся очень непредсказуемыми. Иногда компоненты отображаются правильно. Иногда новый компонент появляется в середине списка v-for
, даже если он был помещен в массив. Иногда после сдвига / выталкивания все старые компоненты остаются, а новый не появляется.
Код
if(this.questions.length > 4) this.questions.shift()
this.questions.push({name:"willy jim"})
Если я использую item.name
в качестве ключа, он работает отлично, если нет повторяющихся имен. Если я использую item.name+index
или что-нибудь такое глупое, все сходит с ума ...