vue3.0项目中使用mitt进行组件传值

3 篇文章 0 订阅
1 篇文章 0 订阅

一、安装依赖mitt

npm install mitt

二、导出模块mitt

在src目录下创建utils文件夹,在该文件夹下创建mybus.ts文件

import mitt from 'mitt';
const mitter = mitt();

const bus: any = {
    $emit: mitter.emit,
    $on: mitter.on,
    $off: mitter.off
}
export {
    bus
}

三、在main.ts 中引入

import { createApp } from 'vue'
import App from './App.vue'
import { bus } from "./utils/mybus"

const app = createApp(App)
app.config.globalProperties.$bus = bus

四、在项目中使用

这里要用到proxy,我们可以提前封装一下兼容ts的写法
在src/utils目录下创建useCurrentInstance.ts文件:

import { ComponentInternalInstance, getCurrentInstance } from 'vue'
export default function useCurrentInstance(): any {
    const { appContext } = getCurrentInstance() as ComponentInternalInstance
    const proxy = appContext.config.globalProperties
    return {
        proxy
    }
}

然后再需要使用的页面:

import useCurrentInstance from '@/utils/useCurrentInstance'
const { proxy } = useCurrentInstance()

//发送
proxy.$bus.$emit('currentRoute', item) //发送当前路由信息

//接受
 proxy.$bus.$on('currentRoute', (item: RouteRecordRaw) => {  //RouteRecordRaw是当前路由对象类型,可从vue-router中取
    console.log(item, '监听点击menu时传到父组件的数据')
  })
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值