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  就可以得到子组件中的实例对象 

Vue2中,可以通过Props属性实现组件之间的父传子通信。父组件可以通过在子组件上定义Props属性,并在使用子组件的地方通过属性绑定的方式向子组件传递数据。具体步骤如下: 1. 在子组件中定义Props属性,用于接收父组件传递的数据。例如,在子组件的脚本中使用props选项定义一个名为title的属性: props: ['title'] 2. 在父组件中使用子组件,并通过属性绑定的方式向子组件传递数据。例如,在父组件的模板中使用子组件,并通过title属性向子组件传递数据: <ChildComponent :title="父组件的数据"></ChildComponent> 其中,:title是属性绑定的语法,将父组件的数据绑定到子组件的title属性上。 3. 在子组件中可以使用props属性接收父组件传递的数据,并在子组件的模板中使用该数据。例如,在子组件的模板中可以使用{{ title }}来显示父组件传递过来的数据。 这样就实现了Vue2中组件之间的父传子通信。通过在子组件上定义Props属性,并在父组件中使用属性绑定的方式向子组件传递数据,可以实现父组件向子组件传递数据的目的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue3 - 组件通信父传子)](https://blog.csdn.net/weixin_44198965/article/details/127875160)[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_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值