Задать вопрос

Как правильно изменить данные внутри массива при использовании Vuex?

Доброго времени суток.
Имеется vuex, в котором есть переменная хранящая в себе массив объектов. Нужно сделать, чтобы была возможность изменять объекты внутри массива и все это сразу бы отражалось в компоненте Vue. В самом компоненте примерно такой код
computed:{
      view(){
        return this.$store.getters.getView;
      }
}

В Vuex пробовал подобный код
EDIT_VIEW_LIST(state, item){
  state.listView.forEach((elem,idx)=>{
    if(elem.id===item.id){
      elem=item;
    }
  })
}

и такой
EDIT_VIEW_LIST(state, item){
  let idx=state.listView.findIndex((elem,idx)=>{
        return elem.id===item.id;
  });
  if(idx){
    state.listView[idx]=item;
  }
}

Но компонент Vue не реагирует на подобные изменения. На данный момент решил проблему следующим способом:
EDIT_VIEW_LIST(state, item){
  state.listView=state.listView.map((elem,idx)=>{
    return elem.id===item.id ? item : elem;
  })
}


Но мне кажется, что это не совсем правильный способ. Подскажите как лучше выполнить данное изменение массива?
  • Вопрос задан
  • 2480 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Вот такое описание есть по работе с массивами: https://ru.vuejs.org/v2/guide/list.html#Отслеживан...
Должен помочь метод Vue.set
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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