Vue父子组件传值(复杂数据类型的值)

摘要:vue 父子组件传值是很常见的,多数情况下都是父传递给子的值是基础数据类型,如string,number,boolean,当父组件值被修改时,子组件能够实时的作出改变。如果父子传值的类型是复杂数据类型(object,array)这种时

vue 父子组件传值是很常见的,多数情况下都是父传递给子的值是基础数据类型,如string,number,boolean,当父组件值被修改时,子组件能够实时的作出改变。如果父子传值的类型是复杂数据类型(object,array)这种时


1.通常的做法是在子组件监听props属性

<!--父组件-->
<div class="parent">
    <!--子组件-->
    <child :val="val"></child>
</div>

<script>
    export default {
       data(){
            return {
                val:{
                      name:'name',
                      age:'18'
                } 
           }
    }
    }
</script>
<! 子组件监听props>
<div class="child">
   {{val.name +":"+ val.age}}
</div>

<script>
    export default {
       props:'val',
       data(){ return {}},
     watch:{
       val:{
          handle(newVal){
              console.log(newVal)
           },
          deep:true
        }
     }
    }

</script>

细节点:这里监听到父组件的值被修改时,不要在回调里再对此值做修改操作,否则提示报错,并进入死循环导致浏览器gg


2.还有一种做法是在父组件修改,避免进坑,官方文档有说明:https://cn.vuejs.org/v2/guide/list.html#数组更新检测


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_4643