Vue unshift仅重复最后一项

时间:2018-04-27 03:10:37

标签: arrays vue.js vuejs2

我的问题与此问题相同:

https://laracasts.com/discuss/channels/vue/vue-unshift-only-repeats-the-last-item

我有一个这样的数组:

Arrays.stream(stringArray)
      .map(Integer::parseInt)
      .collect(Collectors.toList());

当我尝试重新设置新项目时。按预期推送工作,它将新数据推送到数组的末尾,但我需要将数据放到数组的位置0,这就是问题......数组是打破并再次放入我的最后一个数组结果。

这里有一段视频,可以更准确地了解发生了什么并展示代码。

https://vimeo.com/266804712

我不明白问题出在哪里。

pd:我尝试将:键放入我的组件但没有结果。

更新:

remate: {id:1, lotes: [{id:1, nombre: lalala}, {id:2, nombre: lololo}]}

1 个答案:

答案 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>