电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue總線機制(bus)知識點詳解

瀏覽:7日期:2023-01-21 18:18:51

vue中非父子組件之間通信除了使用vuex,也可以通過bus總線,兩者適用場景不同。

bus適合小項目、數(shù)據(jù)被更少組件使用的項目,對于中大型項目 數(shù)據(jù)在很多組件之間使用的情況 bus就不太適用了。bus其實就是一個發(fā)布訂閱模式,利用vue的自定義事件機制,在觸發(fā)的地方通過$emit向外發(fā)布一個事件,在需要監(jiān)聽的頁面,通過$on監(jiān)聽事件。

vuex適用中大型項目、數(shù)據(jù)在多組件之間公用的情況。

簡單介紹兩者的區(qū)別之后,就要介紹下我在一個項目中遇到的一個場景了,這個場景使用bus可能更加適合些:

vue總線機制(bus)知識點詳解

//main.js Vue.prototype.bus = new Vue();new Vue({ render: h => h(App) ...}).$mount(’#app’);/**通過把一個vue實例賦于Vue構(gòu)造函數(shù)原型上的一個屬性bus(當然起任何名稱都是可以的)*而每個Vue實例都是有$emit和$on方法的*由于bus屬性在Vue原型上,根據(jù)原型鏈查找規(guī)則,在頁面中我們就可以通過 this.bus.$emit 和 *this.bus.$on來進行跨組件通信了*/

//導航欄組件中//點擊事件發(fā)生時發(fā)布一個事件this.bus.$emit(’even-name’,args1, arg2 , ...) //這里我們可以把點擊導航的相關信息攜帶出去

//路由顯示頁面中this.bus.$on(’event-name’, (...args) => { //根據(jù)參數(shù)來進行路由跳轉(zhuǎn)})

這個事件監(jiān)聽 和 路由跳轉(zhuǎn)的邏輯我們可以弄成一個mixins進行復用。到這樣就完成了。

但是這樣還是有點麻煩,每個頁面都需要引入mixins,有沒有更好的辦法呢?答案是肯定的。我們項目導航欄是通過路由meta循環(huán)出來的,每項有對應導航欄的路由,結(jié)構(gòu)如下:

{ path: ’/xxxx’, component: xxxx, meta: [ { name: ’導航1’ }, { name: ’導航2’, url: ’我是導航2的路由’ }, { name: ’導航3’, url: ’我是導航3的路由’ }, { name: ’導航4’, } ] },

在思索時我忽然發(fā)現(xiàn)每個導航欄的index、導航欄長度length、及router.go方法之間有一個規(guī)律,那就是我們可以把index + 1 - length作為router.go的參數(shù),從而不用再關心query參數(shù)了,而且只需要在導航欄組件操作一次就可以了,完美!

//導航欄組件點擊事件處理函數(shù)中 if (url) { const meta = this.$route.meta; this.$router.go(index + 1 - meta.length)}

知識點補充:

將Bus注入到Vue根對象中

import Vue from ’vue’const Bus = new Vue()var app= new Vue({ el:’#app’, data:{Bus }})

在子組件中通過this.$root.Bus.$on(),this.$root.Bus.$emit()來調(diào)用

以上就是vue總線機制(bus)知識點詳解的詳細內(nèi)容,更多關于vue中總線機制的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 铁素体测量仪/检测仪/铁素体含量测试仪-苏州圣光仪器有限公司 | 空压机网_《压缩机》杂志| 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 江苏皓越真空设备有限公司| 市政路灯_厂家-淄博信达电力科技有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 泡沫消防车_水罐消防车_湖北江南专用特种汽车有限公司 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 山东艾德实业有限公司 | 杜甫仪器官网|实验室平行反应器|升降水浴锅|台式低温循环泵 | 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | 山东包装,山东印刷厂,济南印刷厂-济南富丽彩印刷有限公司 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | 湖南教师资格网-湖南教师资格证考试网| 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 空冷器|空气冷却器|空水冷却器-无锡赛迪森机械有限公司[官网] | 洛阳网站建设_洛阳网站优化_网站建设平台_洛阳香河网络科技有限公司 | 亿诺千企网-企业核心产品贸易| 探伤仪,漆膜厚度测试仪,轮胎花纹深度尺厂家-淄博创宇电子 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 捆扎机_气动捆扎机_钢带捆扎机-沈阳海鹞气动钢带捆扎机公司 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 巩义市科瑞仪器有限公司|