Как я могу клонировать данные из состояния Vuex в локальные данные? - PullRequest
0 голосов
/ 30 сентября 2018

Как я могу клонировать данные из состояния vuex в атрибут локальных данных?

State

this.tsStore.shemes

ДанныеАтрибут

data () {
  return { shemes: [] }
}

Я пытался сделать это в updated () this.shemes = this.tsStore.shemes, но похоже, что у него осталось связывание .. потому что, когда я удаляю один элемент в этом.Я также удаляю этот элемент в состоянии и получаю сообщение об ошибке «Не изменять состояние хранилища vuex вне обработчиков мутаций».

Мне нужно клонировать состояние и делать то, что мне нужно, с этими данными ив то же время не влияет на мое состояние штата.

Ответы [ 3 ]

0 голосов
/ 30 сентября 2018

try

this.shemes = JSON.parse ( JSON.stringify ( this.tsStore.shemes) )

Это приведет к клонированию всех значений и объектов из массива в хранилище.

0 голосов
/ 01 октября 2018
data(){
  return {
    shemes: null,
  }
},
beforeMount() {
  this.shemes = this.stateShemes
},
computed: {
  stateShemes() { return this.tsState.shemes }
  // OR that's how i do
  stateShemes() { return this.$store.getters['shemes'] }
}

ОБНОВЛЕНИЕ

Таким образом, вы получаете некоторое значение из своего состояния с помощью вычисляемых переменных.Вы не можете просто присвоить значение из своего хранилища в блоке data ().Так что вы должны сделать это перед Mount.Таким образом, если у вас есть наблюдатель для переменной shemes, он не сработает при назначении вычисленного значения.Если вы поместите его в hook (), наблюдатель сработает.

Также, вы можете объяснить, почему вы используете этот вызов this.tsState.shemes вместо this.$store.getters.shemes?

0 голосов
/ 30 сентября 2018

Вам необходимо создать новый массив.this.tsStore.shemes даст вам ссылку на связанный массив.Вы можете попробовать использовать оператор распространения или arr.slice (), чтобы создать новый массив с тем же содержимым.обратите внимание, что это мелкая копия.

this.shemes = [...this.tsStore.shemes]

или

this.shemes = this.tsStore.shemes.slice()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...