vue 的父子传值如果是对象,传的是引用还是拷贝?

父组件给子组件传值是把父组件这个值的引用地址给子组件了吗,那为何子组件改变,父组件不变, 如果不是,为何不能在子组件里修改他,还抛错误

已解决 悬赏分:0 - 解决时间 2021-11-27 05:04
反对 0举报 0 收藏 0

回答2

最佳
  • @

    props禁止修改,直接修改会报异常;
    引用类型,指向的确实是同一个地址;
    如果要改,定义个新的变量,在watch中监听props,让新的变量等于props就行了,修改新的变量不会报异常;

    props:{fatherdata:''},
    data(){
        return{data:''}
    },
    watch:{
        fatherdata(){
            this.data = this.fatherdata;
        }
    },
    methods:{
        change(){
            this.data.a=1;
        }
    }

    支持 0 反对 0 举报
    2021-11-26 08:18
  • @

    值传递,如果值是引用类型比如函数,那么子组件可操作父方法,如果是是值类型则彼此独立,copy一份。本质上是值传递,只不过有的值是引用类型,有的值是值本身。

    支持 0 反对 0 举报
    2021-11-26 08:49