Одной из самых отличительных особенностей Vue является ненавязчивая система реактивности. когда вы изменяете данные экземпляра Vue, представление обновляется.

Но иногда данные не обновляются должным образом. В этой статье мы объясним, почему, и предложим вам простой, мощный и правильный способ решить эту проблему.

Причина. Изменение части объекта не приведет к повторному рендерингу.

https://v2.vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats

Решение - Реконструировать весь объект

объект = […объект]

  // we are changing only the variable isActive in the Array.
  // The changes will not trigger the updates in child components
  currentPlaceholders.value[0].isActive = true
  // trigger reactivity
  currentPlaceholders.value = [...currentPlaceholders.value

Правильный способ обновления объекта:

const syncPlaceholders = () => {
  const deckCards = gameStore.myDeck?.deck_cards || []
  currentPlaceholders.value = currentPlaceholders.value.map((item, index) => {
    item.selectedCard = deckCards[index] || null
    return item
  })
}

Неправильный способ обновления объекта:

const syncPlaceholders = () => {
  currentPlaceholders.value.forEach((item, index) => {
    item.selectedCard = dataMyDeck.value?.getMyDeck?.deck_cards[index]
    item.selectedCardStatus = dataMyDeck.value?.getMyDeck?.deck_cards[index]?.artistStatus
  })
}