vue3中用mitt实现组件之间传递数据

Vue3移除了$on、$emit和$off,本文介绍如何利用mitt库实现组件之间的数据传递。通过安装mitt,组件内部引入并创建监听器,一个组件emit数据,另一个组件on数据来接收。在实际操作中,遇到'form-item-created'监听器参数类型不匹配的问题,解决方法是降级mitt到2.1.0版本。
摘要由CSDN通过智能技术生成

vue2中可以使用$on,$emit,$off 来发射,监听数据,但是vue3中取消了它们,因此要想新的办法。我们可以用mitt来实现。

首先,安装mitt

npm install mitt --save

然后组件内引入

import mitt from 'mitt'

正式使用,先创建监听器,一个组件emit数据,另一个组件on数据

validateForm组件内:

// 创建监听器
export const emitter = mitt()

setup(){

    // 创建存放监听来的函数,采用emit监听
    let funcArr:ValidateFunc[] = []

    const callback = (func:ValidateFunc)=>{
      funcArr.push(func)
    }

    emitter.on('form-item-created',callback)
    
//在组件onUnmounted时取消对该事件的监听    
    onUnmounted(()=>{
      emitter.off('form-item-created',callback)
      funcArr=[]
    })

}

validateInput组件:

//先导入创建好的监听器
import {emitter} from './ValidateForm.vue'


setup(){
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值