vue3+ts使用bus事件总线的示例代码

 更新时间:2022年08月24日 08:42:29   作者:张彦鹏的博客  
这篇文章主要介绍了vue3+ts使用bus事件总线,文中给大家提到了vue总线机制(bus)的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1、在vue2中我是这样使用的

//创建一个vueBus.js
import Bus from 'vue';
let install = function (Vue) {
Vue.prototype.$bus = new Bus()
}

export default {
install
};

//在main.js中引入
import vueBus from '@/utils/vueBus';
Vue.use(vueBus);
//可根据this.$bus._events['事件名'] 来查看是否存在该事件监听

2、在vue3中使用

//在vue3中需要使用mitt插件,直接下载即可
//创建vueBus.ts文件
const init_mitt = mitt()
const emitter:any = {
_events:{},
$emit:init_mitt.emit,
$on:function(t:any,e:any){
this._events[t] = true
init_mitt.on(t,e)
},
$off:function(t:any,e:any){
delete this._events[t]
init_mitt.off(t,e)
}
}
export default emitter

//在main.ts中引入使用
import emitter from '@/utils/vueBus';
app.config.globalProperties.$bus = emitter

//如果需要挂在其他的全局变量上,需要到声明文件声明

补充:下面看下vue总线机制(bus)

vue中非父子组件之间通信除了使用vuex,也可以通过bus总线,两者适用场景不同。

bus适合小项目、数据被更少组件使用的项目,对于中大型项目 数据在很多组件之间使用的情况 bus就不太适用了。bus其实就是一个发布订阅模式,利用vue的自定义事件机制,在触发的地方通过$emit向外发布一个事件,在需要监听的页面,通过 $on监听事件。

vuex适用中大型项目、数据在多组件之间公用的情况。

组件通信bus的使用

在utils文件下下创建bus.js

// utils - bus.js
import Vue from 'vue'
const bus = new Vue()
export default bus

一、传值

发送信息

import bus from '@/utils/bus'

第一个参数为标志变量,第二个参数为通信的值

us.$emit('message', 'hello');

接收信息

import bus from '@/utils/bus'

第一个参数为标志变量,第二个参数中的e为通信的值

bus.$on('message', (e) => {
 console.log(e)
})

二、调用方法

一个组件(A)调用另一个组件(B)的方法

B组件的方法

import bus from '@/utils/bus'
mounted () { 
 bus.$on('testA', this.testA) 
},
testA () {
 console.log('由A组件调用')
}

A组件调用

import bus from '@/utils/bus'
mounted () {
 bus.$emit('testA')
}

到此这篇关于vue3+ts使用bus事件总线的文章就介绍到这了,更多相关vue3事件总线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3 中的插件和配置推荐大全

    Vue3 中的插件和配置推荐大全

    这篇文章主要介绍了Vue3 中的插件和配置推荐大全,本文通过图文实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Vue实现飞机大战小游戏

    Vue实现飞机大战小游戏

    这篇文章主要为大家详细介绍了Vue实现飞机大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • vue项目如何引入element ui、iview和echarts

    vue项目如何引入element ui、iview和echarts

    这篇文章主要介绍了vue项目如何引入element ui、iview和echarts,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue配置文件实现代理v2版本的方法

    vue配置文件实现代理v2版本的方法

    这篇文章主要介绍了vue配置文件实现代理v2版本的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Vue express鉴权零基础入门

    Vue express鉴权零基础入门

    这篇文章主要介绍了详解express鉴权,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • vue使用swiper的时候第二轮事件不会触发问题

    vue使用swiper的时候第二轮事件不会触发问题

    这篇文章主要介绍了vue使用swiper的时候第二轮事件不会触发问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vue使用video.js的代码详解

    Vue使用video.js的代码详解

    这篇文章主要介绍了Vue使用video.js的代码详解,包括在vue脚手架中引入video.js,实例化了视频.js播放器,并在上销毁了它,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • vue拦截器及请求封装代码

    vue拦截器及请求封装代码

    这篇文章主要介绍了vue拦截器及请求封装代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 前端实现简单的sse封装方式(React hook Vue3)

    前端实现简单的sse封装方式(React hook Vue3)

    这篇文章主要介绍了前端实现简单的sse封装方式(React hook Vue3),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 前端框架之封装Vue第三方组件三个技巧

    前端框架之封装Vue第三方组件三个技巧

    这篇文章主要为大家介绍了前端框架封装Vue第三方组件的三个技巧示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07

最新评论