vue3+ts使用bus事件總線的示例代碼
1、在vue2中我是這樣使用的
//創(chuàng)建一個(gè)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); //可根據(jù)this.$bus._events['事件名'] 來查看是否存在該事件監(jiān)聽
2、在vue3中使用
//在vue3中需要使用mitt插件,直接下載即可 //創(chuàng)建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 //如果需要掛在其他的全局變量上,需要到聲明文件聲明
補(bǔ)充:下面看下vue總線機(jī)制(bus)
vue中非父子組件之間通信除了使用vuex,也可以通過bus總線,兩者適用場(chǎng)景不同。
bus適合小項(xiàng)目、數(shù)據(jù)被更少組件使用的項(xiàng)目,對(duì)于中大型項(xiàng)目 數(shù)據(jù)在很多組件之間使用的情況 bus就不太適用了。bus其實(shí)就是一個(gè)發(fā)布訂閱模式,利用vue的自定義事件機(jī)制,在觸發(fā)的地方通過$emit向外發(fā)布一個(gè)事件,在需要監(jiān)聽的頁面,通過 $on監(jiān)聽事件。
vuex適用中大型項(xiàng)目、數(shù)據(jù)在多組件之間公用的情況。
組件通信bus的使用
在utils文件下下創(chuàng)建bus.js
// utils - bus.js import Vue from 'vue' const bus = new Vue() export default bus
一、傳值
發(fā)送信息
import bus from '@/utils/bus'
第一個(gè)參數(shù)為標(biāo)志變量,第二個(gè)參數(shù)為通信的值
us.$emit('message', 'hello');
接收信息
import bus from '@/utils/bus'
第一個(gè)參數(shù)為標(biāo)志變量,第二個(gè)參數(shù)中的e為通信的值
bus.$on('message', (e) => { ?console.log(e) })
二、調(diào)用方法
一個(gè)組件(A)調(diào)用另一個(gè)組件(B)的方法
B組件的方法
import bus from '@/utils/bus' mounted () {? ?bus.$on('testA', this.testA)? }, testA () { ?console.log('由A組件調(diào)用') }
A組件調(diào)用
import bus from '@/utils/bus' mounted () { ?bus.$emit('testA') }
到此這篇關(guān)于vue3+ts使用bus事件總線的文章就介紹到這了,更多相關(guān)vue3事件總線內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決vue單頁面應(yīng)用進(jìn)入頁面加載所有 js 的問題
這篇文章主要介紹了解決vue單頁面應(yīng)用進(jìn)入頁面加載所有 js 的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08vue2.0 better-scroll 實(shí)現(xiàn)移動(dòng)端滑動(dòng)的示例代碼
本篇文章主要介紹了vue2.0 better-scroll 實(shí)現(xiàn)移動(dòng)端滑動(dòng)的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2018-01-01vue把頁面轉(zhuǎn)換成圖片導(dǎo)出方式(html2canvas導(dǎo)出不全問題)
這篇文章主要介紹了vue把頁面轉(zhuǎn)換成圖片導(dǎo)出方式(html2canvas導(dǎo)出不全問題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10基于Vue3實(shí)現(xiàn)列表虛擬滾動(dòng)效果
這篇文章主要為大家介紹了如何利用Vue3實(shí)現(xiàn)列表虛擬滾動(dòng)效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定價(jià)值,需要的可以參考一下2022-04-04VUE解決 v-html不能觸發(fā)點(diǎn)擊事件的問題
今天小編就為大家分享一篇VUE解決 v-html不能觸發(fā)點(diǎn)擊事件的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10vue2.0 兄弟組件(平級(jí))通訊的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue2.0 兄弟組件(平級(jí))通訊的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01