0

当我将 v-model 设置为等于挂载钩子中的道具时,为什么更改也会影响道具。

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

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

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

因此,当我对 component_value 进行一些更改时,它也会影响 initial_value。

我想在这里写下我的全部代码,但只是试着让它变短。

4

3 回答 3

1

最简单的方法是克隆你的initial_value.

你可以这样做:

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

这应该有效。

您可以在此处查看更多答案。

于 2020-01-19T16:07:06.510 回答
1

更改挂载钩子中的代码,如下所示

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

它将 this.initial_value 变量的值不仅通过引用,而且通过它的数据。在 JavaScript 中,变量可以存储两种类型的数据:原始数据和引用数据。this.initial_value 具有参考数据,因为它的类型是数组。更多解释请阅读本文来源

于 2020-01-19T16:24:43.720 回答
0
export default{
  props: ['initial_value'],

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

}

这应该有效。

编辑:

如果要连续更改道具(反应性),则必须使用计算属性,如下所示

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

问候

于 2020-01-19T15:42:40.900 回答