Vuex - клонированное состояние в свойство объекта данных, невозможно удалить элемент массива - PullRequest
0 голосов
/ 12 октября 2018

Я клонировал свое состояние из Vuex в массив моего компонента data().Моя проблема в том, что я пытаюсь удалить первый элемент в массиве из моего клона с помощью shift(), а также добавить его обратно с помощью unshift() Я получаю сообщение об ошибке:

[vuex]Не изменяйте состояние хранилища vuex вне обработчиков мутаций.

Как я могу удалить в своем клонированном состоянии что-то, что не влияет на само состояние?

Сохранение / клонирование

    beforeMount () {
        this.traningArea = this.stateExercises
    },
    computed: {
        ...mapState({
            userStore: state => state.userStore,
            tsStore: state => state.trainingSchemeStore
        }),
        stateExercises () {
            return this.tsStore.schemeExercises
        }
    }

Попытка запустить shift() при нажатии и unshift() при повторном нажатии пользователя

this.traningArea[0].shift()
this.traningArea[0].unshift(obj)

И вот здесь у меня есть эта ошибка.

СОСТОЯНИЕ

const state = {
    trainings: []
}

const actions = {
    getTrainingExercise: ({commit}, ids) => {
        var payload = {
           'trainings_id': ids
        }

        return Vue.http.post(getTrainingsById, payload, 
        {headers: getHeader()})
        .then(response => {
            if (response.status === 200) {
                commit('SET_TERL', response.body.data)
            }
        })
  },

const mutations = {
    SET_TERL(state, trainings) {
       state.trainings.push(trainings)
    }
}

1 Ответ

0 голосов
/ 12 октября 2018

Я надеюсь, что не пойму вас неправильно, поэтому я думаю, что решение будет таким:

  const mutations = {
      SET_TERL(state, trainings) {
       state.trainings.push(trainings)
      },
       SHIFT(state, index) {
       state.trainings[index].shift() 
      },
     UNSHIFT(state, index,obj) {
       state.trainings[index].unshift(obj) 
      }
   } 

и когда вы вызываете метод:

 this.tsStore.commit("SHIFT",0);

или

  this.tsStore.commit("UNSHIFT",0,obj); 
...