Задать вопрос
alaskafx
@alaskafx
Не .do Frontend

Проблема действительного отображения с помощью v-for + vuex?

Есть хранилище, в котором данные могут изменяться в любой момент:

хранилище:
cars: [
                {
                    name: 'Debian',
                },
                {
                  name: 'Ss'
                },
                {
                   name: 'Gorsto'
                },
            ],


мутация:
deleteCarFromArray: (state, payload) => {
           state.cars[payload] = {InfoCreate: -1}
        },


геттер:
carInfoGetter(store){
            return [...store.cars]
        }


В компоненте:

компьютед:

filteredCards() {
      return this.$store.getters.carInfoGetter.filter((el) => {
        return el.InfoCreate !== -1 && el.InfoCreate !== -2;
      });


Сами карточки:

<div  v-for="(card, index) in filteredCards" :key="index.id">
...
</div>


Суть проблемы в том, что, если происходит какое-то действие (вызывается мутация) - карточки, которые на странице никак не изменяются.
Карточки, которые НЕ возвращает фильтр filteredCards появляться не должны, а сейчас они остаются на месте и никак не изменяются при каких-то мутациях.
Как решить и почему так?
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae Куратор тега Vue.js
Тлен
Vue 2 не умеет слушать изменения массива по индексу. Тебе либо нужно использовать array.splice, либо Vue.set.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы