我的问题与此问题相同:
https://laracasts.com/discuss/channels/vue/vue-unshift-only-repeats-the-last-item
我有一个这样的数组:
Arrays.stream(stringArray)
.map(Integer::parseInt)
.collect(Collectors.toList());
当我尝试重新设置新项目时。按预期推送工作,它将新数据推送到数组的末尾,但我需要将数据放到数组的位置0,这就是问题......数组是打破并再次放入我的最后一个数组结果。
这里有一段视频,可以更准确地了解发生了什么并展示代码。
我不明白问题出在哪里。
pd:我尝试将:键放入我的组件但没有结果。
更新:
remate: {id:1, lotes: [{id:1, nombre: lalala}, {id:2, nombre: lololo}]}
答案 0 :(得分:2)
元素正被添加到数组中,但它没有被渲染,因为Vue尝试尽可能少地更改DOM。
换句话说,使用绑定到每个元素的key
。使用:
:key="'lote' + lote.id"
不
:key="'lote' + index"
因为使用索引是不好的,因为数组中的第二个元素将始终以lote1
作为索引,无论它的值是什么(当你.unshift
为新的时候,尽管有一个新的元素在位置1处,索引没有改变,因此Vue不会重新渲染新元素。)
更改了v-for
:
<template v-for="(lote, index) in remate.lotes">
<Lote :Remate="remate" :Lote="lote" :key="'lote' + lote.id"></Lote>
<hr>
</template>