父子组件的值关系,子组件修改props传过来的对象类型值,继而改变父组件的值

  • vue2.0中,子组件中不能修改父组件的状态,否则在控制台中会报错。
  • 比如,父组件传给子组件一个变量,子组件只能接收这个值,不能修改这个值,修改会报错。想要修改,只能赋值给另一个data中定义的变量
  • 但是,这仅限于props为非数组及对象等引用类型数据,譬如字符串,数字等
  • 如果props是对象的话,在子组件内修改props的话,父组件是不会报错的,父组件的值也会跟着改变

父组件传递给子组件一个对象,子组件将这个对象改了值,那么父组件中的值相应改变
为对象添加属性的时候,最好用这种方式增加,而不是直接点加,this.$set(this.food,'count',1)

例如:

//父组件
<template>
  <div class="hello">
    <div>{{obj.a}}</div>
    <child :obj="obj"></child>
  </div>
</template>
<script>
import Child from './child'
export default {
  name: 'Parent',
  components:{
    Child
  },
  data () {
    return {
      obj: {
        a: 111111
      }
    }
  }
}
</script>

//子组件
<template>
  <div id="child">
    <button @click="changeObj">修改obj的属性值</button>
    {{obj}}
  </div>
</template>
<script>
export default {
 props:{
   obj:{
     type: Object,
     defalut:{
         a: 111
     }
   }
 },
 methods:{
   changeObj(){
     this.$set(this.obj,'a','2222222')
   }
 }
}
</script>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,组件无法直接修改组件传递过来的,因为Vue是单向数据流的。组件的数据会向下流动到组件中,但组件无法直接影响组件的数据。这是为了防止数据流混乱和难以理解。根据Vue官方文档的说法,prop的更新会向下流动到组件中,但反过来是不行的。这样可以避免组件意外地修改组件的状态,从而使数据流向变得难以理解。 在Vue开发中,我们通常采用组件触发组件中的方法来修改组件。一种常用的方法是通过props组件的方法传递给组件组件可以通过props接收并直接触发组件的方法来实现修改组件。 另外,组件还可以通过将组件的数据作为参数发送给组件,从而实现组件组件传递数据。 总结起来,要在Vue中实现组件改变组件传递过来的,可以通过以下方法: 1. 通过props组件的方法传递给组件,在组件中通过props接收并触发组件的方法来修改组件。 2. 组件可以将自己的数据作为参数发送给组件,以实现组件组件传递数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue组件更改组件数据](https://blog.csdn.net/ct5211314/article/details/124280896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值