vue js опора равна v-модели - PullRequest
0 голосов
/ 19 января 2020

Почему изменения вступают в силу также для реквизита, когда я устанавливаю v-модель равной реквизиту в хуке монтирования.

export default{
  props: {
    initial_value: Array,
  },

  data(){
     return { component_value: [] }
  },

   mounted(){
     this.component_value = this.initial_value;
   }
}

Поэтому, когда я делаю некоторые изменения в component_value, это также влияет на initial_value.

Я хотел написать весь свой код здесь, но просто попытался сделать его коротким.

Ответы [ 3 ]

1 голос
/ 19 января 2020

Самый простой способ сделать это - клонировать ваш initial_value.

. Вы можете сделать это так:

mounted() {
     this.component_value = JSON.parse(JSON.stringify(this.initial_value));
   }

Это должно работать.

Вы можете проверить больше ответов здесь .

1 голос
/ 19 января 2020

Измените свой код в хуке монтирования, как показано ниже

mounted() {
   this.component_value = JSON.parse(JSON.stringify(this.initial_value));
}

Значение переменной this.initial_value будет изменено не просто по ссылке, а по данным. В JavaScript переменная может хранить два типа данных: примитивные и ссылочные. И this.initial_value содержит справочные данные, поскольку его тип является массивом. Для более подробного объяснения, пожалуйста, прочитайте эту статью источник

0 голосов
/ 19 января 2020
export default{
  props: ['initial_value'],

  data(){
     return { component_value: this.initial_value }
  }

}

Это должно работать.

РЕДАКТИРОВАТЬ:

Если вы собираетесь постоянно менять реквизиты (реактивность), вы должны использовать вычисляемое свойство, как это

computed: { 
      component_value(){ 
           return JSON.parse(JSON.stringify(this.initial_value) 
          } 
   }

С уважением

...