vue组件通信 - 父向子传、子向父传 (详细步骤)

目录

一、父组件向子组件传值

        1、要传递的值为 普通数据类型 的值, 

       2、要传递的值为 复杂数据类型、被变量接收的值类型 

 二、子组件向父组件传值

 三、扩展

(注意:谁被引入,谁即为子组件)

一、父组件向子组件传值

        以要传递的数据类型可分为两种情况

        1、要传递的值为 普通数据类型 的值, 

           父组件内传值~(直接在组件标签内使用,以键值对形式书写)

<组件名 title="小朋友" uname="小明"> </组件名>

             子组件内接收值~  (注意要与父组件内定义的变量名一致)


export default {
    props: ["title" , "uname"]
}

       2、要传递的值为 复杂数据类型、被变量接收的值类型 

        父组件传值 ~ (在标签内以动态属性绑定的形式传入变量)

<template>
    <div>
        <组件名 :title="myTitle" :list="arr"> </组件名>   <!--myTitle、myName变量都已有值-->
    </div>
</template>

        子组件内接收值~  (此为props的常用形式)(注意要与父组件内定义的变量名一致)

export default{
    props:{
        title:{
            type:String //此为title的数据类型
            },
        list:{
            type: Array //此为list的数据类型
            }
    }
}

 二、子组件向父组件传值

        实现语法:

                父组件中:  @自定义事件名 = " 父内methods 函数名 "

                子组件中:  this.$emit(“父内的自定义事件名” , 要传的值 )

        子组件内传值~

export default{
    methods:{
        btn(){  //点击按钮发送子内的数据
            this.$emit("自定义事件名" , 要传递的数据)
        }
    }
}

        父组件内接收值

//须在组件名标签上 创建桥梁
<template>
    <div>
        <组件名 @子内的自定义事件名 = " 父内的函数名">  </组件名>
    </div>
</template>
export default{
    methods:{
        组件名标签内定义的函数名 (val) {  //此val形参即是从子组件接收到的传递值
             this.uname = val  //改变自身值
    }
}

三、扩展

        1、<comA> </comA> 若标签内无数据即可简写为 <comA />

        2、<comA> </comA> 写法等于 <com-a> </com-a>

        2、$parent  可以在子组件内 获取到父组件内所有的实例对象且可访问方法、对象

        3、$refs  可以在父组件中获取到 子组件内所有的实例对象且可访问方法、对象

                在组件中设置 ref="myRef"     
                     例:<comA @updateInfo=" message = $event " ref="myRef"> </comA>
                     this.$refs.myRef  就可以得到子组件中的实例对象 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值