vue js prop 等于 v-model

Posted

技术标签:

【中文标题】vue js prop 等于 v-model【英文标题】:vue js prop equal to v-model 【发布时间】:2020-05-05 18:34:55 【问题描述】:

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

export default
  props: 
    initial_value: Array,
  ,

  data()
     return  component_value: [] 
  ,

   mounted()
     this.component_value = this.initial_value;
   

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

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

【问题讨论】:

【参考方案1】:

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

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

this.initial_value 变量的值不仅仅是引用,而是它的数据。 在 javascript 中,变量可以存储两种类型的数据:原始数据和引用数据。 this.initial_value 具有参考数据,因为它的类型是数组。更多解释请阅读这篇文章source

【讨论】:

【参考方案2】:

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

你可以这样做:

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

这应该可行。

您可以查看更多答案here。

【讨论】:

【参考方案3】:
export default
  props: ['initial_value'],

  data()
     return  component_value: this.initial_value 
  


这应该可行。

编辑:

如果你要不断改变道具(反应性),你必须使用计算属性,像这样

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

问候

【讨论】:

以上是关于vue js prop 等于 v-model的主要内容,如果未能解决你的问题,请参考以下文章

将 props 传递给 Vue-router 实例化的 Vue.js 组件

Vue.js 通过 props 动态改变组件类

在 vue.js 组件中反应 this.props.children

Vue.js 系列教程 2:组件,Props,Slots

Vue.js 递归组件的数据,包括 props

Vue.js prop