Vue перерисовывает список когда юзаю unshift

<button @click="add()">Add</button>

<div>
 <Square v-for="(item, i) in items" :key="i" :num="item"></Square>
 </div>

      data() {
        return {
          items: [1, 2, 3]
        }
      }    

          methods: {
            add() {
              this.items.unshift(5);
            }
          },

Square.vue

<div class="square" v-bind:style="{ 'background-color': randomColor() }">{{ num }}</div>

<script>
  export default {
    name: 'Square',

    props: {
      num: Number
    },

    methods: {
      randomColor() {
        const colorList = ['red', 'blue', 'green', 'yellow', 'orange', 'purple'];

        const randomColorId = Math.floor(Math.random() * (colorList.length-1));

        return colorList[randomColorId];
      }
    }
  }
</script>

Фон у квадратов меняется при добавлении элемента в массив через unshift. С push нет проблем.


Ответы (1 шт):

Автор решения: Qwertiy
<Square v-for="(item, i) in items" :key="i" :num="item"></Square>
<Square v-for="(item, i) in items" :key="item" :num="item"></Square>

Впрочем, в реальном коде такое не заработает.

→ Ссылка