日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue Bus 总线 组件间通信

發布時間:2023/12/18 vue 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue Bus 总线 组件间通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

有時候兩個組件也需要通信(非父子關系)。當然Vue2.0提供了Vuex,但在簡單的場景下,可以使用一個空的Vue實例作為中央事件總線。

<div id="app"><c1></c1><c2></c2> </div> var Bus = new Vue(); //為了方便將Bus(空vue)定義在一個組件中,在實際的運用中一般會新建一Bus.js Vue.component('c1',{ //這里已全局組件為例,同樣,單文件組件和局部組件也同樣適用 template:'<div>{{msg}}</div>',data: () => ({msg: 'Hello World!'}),created() {Bus.$on('setMsg', content => { this.msg = content;});} }); Vue.component('c2',{template: '<button @click="sendEvent">Say Hi</button>',methods: {sendEvent() {Bus.$emit('setMsg', 'Hi Vue!');}} }); var app= new Vue({el:'#app' })

在實際運用中,一般將Bus抽離出來:

Bus.js

import Vue from 'vue' const Bus = new Vue() export default Bus 組件調用時先引入

組件1

import Bus from './Bus'export default {data() {return {.........}},methods: {....Bus.$emit('log', 120)},}

?

組件2

import Bus from './Bus'export default {data() {return {.........}},mounted () {Bus.$on('log', content => { console.log(content)}); } }

但這種引入方式,經過webpack打包后可能會出現Bus局部作用域的情況,即引用的是兩個不同的Bus,導致不能正常通信

?實際運用二(推薦):

當然也可以直接將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()來調用

?

轉自:https://www.cnblogs.com/fanlinqiang/p/7756566.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的vue Bus 总线 组件间通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。