Я долго искал этот ответ. Наконец-то публикую его, так как у меня есть проблема, связанная с этим.
Пожалуйста, проверьте этот фрагмент кода ниже
<div>
<template v-for="(row, index) in rows">
<tr v-if="hasChildData(row, index)" :key="`row-${tabId}-${index}`">
<!-- Rest of the logic -->
</tr>
</template>
</div>
Метод
hasChildData(row, index) {
console.log("Looping index: "+ index);
return row.childData;
}
Допустим, строки представляют собой массив и имеют 5 элементов.
data() {
return {
rows: [
{ test: 123 },
{ test: 345 },
{ test: 567 },
{ test: 789 },
{ test: 904 },
]
};
}
Где-то я пытаюсь обновить определенную строку в массиве строк. В этом случае индекс 3
setChildData() {
Vue.set(this.rows[3], "childData", true);
}
Почему Vue повторно отображает весь цикл. Есть ли способ повторно отображать только определенный индекс только 3 ? Это связано с Изменить конкретный индекс без повторного рендеринга всего массив в Vuejs, но не нашел ответа, который искал.
Вывод После вызова setChildData():
Циклический индекс: 0
Циклический индекс: 1
Циклический индекс: 2
Циклический индекс: 3
Циклический индекс: 4
Пока я ожидаю
Циклический индекс: 3