Vue3中的组件通信

1.【props】父传子

props是使用频率最高的一种通信方式,常用于:父<—>子之间
1)若父传子,属性值是非函数
2)若子传父,属性值是函数

2.自定义事件

$event占位,表示事件对象

<button @click="test(5,6,$event)" type="primary" block round>确定</button>

function test(a: number, b: number,c:Event) {
  console.log(a,b,c);
}

在这里插入图片描述

官方推荐写法:
事件名多个单词组成建议用肉串命名,send-toy 而不是sendToy

3.mitt

1)安装mitt
npm i mitt
2) 在utils目录下增加emitter.ts

// 引入mitt
import  mitt from "mitt";

// 调用mitt得到emitter,emitter能:绑定事件,触发事件
const emitter = mitt()

// 暴露emitter
export default emitter

使用时对应页面:
import emitter from ‘@/utils/emitter’
import { onUnmounted ,onMounted} from ‘vue’
方法:进行发布订阅
核心代码主要实现就是:

1).all = all || new Map() mitt 支持传入 all 参数用来存储事件类型和事件处理函
数的映射Map,如果不传,就 new Map()赋值给 all

2).on(type, handler)定义函数 on来注册事件,以type为属性,[handler]为属性值,
存储在 all 中,属性值为数组的原因是可能存在监听一个事件,多个处理程序

3).off(type, [handler])来取消某个事件的某个处理函数,根据 type 找到对应的事件处理数组,
对比 handler 是否相等,相等则删除该处理函数,不传则删除该事件的全部处理函数

4).emit(type, [evt])来派发事件,根据 type 找到对应的事件处理数组并依次执行,传入参数 evt(对象最好,传多个参数只会取到第一个)

4.组件通信v-model

e v e n t 对于原生事件, event 对于原生事件, event对于原生事件,event就是事件对象=》能.target
对于自定义事件,$event就是出发事件时所传递的数据=》不能.target

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值