Vue 组件通信-自定义事件(七)

一、组件自定事件概念

     自己定义的事件,包含事件名,事件回调等,定义好之后去给组件使用。也是一种组件的通信方式,适用于子组件传递给父组件

二、 组件自定义事件实现子传父

  1、在父组件中给子组件绑定一个自定义事件

     在子组件标签内,通过@事件名=' 事件回调 '

  2、子组件需要声明父组件绑定的事件:

在子组件中,通过 const emit=defineEmits(['事件名']) 声明父组件绑定的事件,

通过emit('事件名') 进行触发,传入参数,父组件接受参数

3、子组件触发父组件绑定的事件时,父组件会调用事件回调:

MotherEvent.vue

<template>
	<div class="dd">
		<div id="df">父组件::欢迎返回子组件数据:<h3>{{sendName}} &nbsp;{{sendTel}}</h3></div>
		<!-- 通过父组件给子组件传递函数类型 -->
		<Children2  @sendName="re.getName"></Children2>
	</div>
</template>

<script setup>
	import Children2 from "./Children2.vue"
	import {ref,reactive} from 'vue'
	
	const sendName=ref('')
	const sendTel=ref('')

	//父传子的类型数据
	const re = reactive({  
	  getName(name,tel){
		    sendName.value=name;
			sendTel.value=tel;
		 
	  }
	  })
</script>

<style>
	h3{
		color:blueviolet;
	}
	.dd{
		background: goldenrod;
		width:50%;
		height:400px;
	}
	
	#df{
		font-size: 32px;
	}
</style>

Children2.vue

<template>
	<div class="bg">
		<p>我是子组件Children</p>
		{{emp.name}} 、 {{emp.tel}} <br/><br/>
        <el-button @click="emit('sendName',emp.name,emp.tel)">把名字传给父组件</el-button>
	</div>
</template>

// 注意:必须使用setup,否则不能渲染
<script setup>
import {ref,computed} from 'vue'

const emp=ref({
	name:'张非凡',
	tel:'119',
	})

//接受父亲传过来的事件
const emit=defineEmits(['sendName'])

</script>

<style>
	.bg{
		margin: 0 auto;
		background: gray;
		width:50%;
		height:200px;
	}
</style>

4、单击子组件的按钮,则可以通过绑定的事件进行参数传递,父组件通过回调接收。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值