最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue事件總線怎么用

 更新時間:2025年04月02日 11:18:12   作者:Xwzzz_  
這篇文章主要介紹了Vue事件總線的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.常見的組件通信方式

  • pros:父組件傳子組件
  • 自定義事件:子組件傳父組件
  • vuex:均可實現(xiàn)
  • 插槽:父組件傳子組件
  • pubsub-js:均可實現(xiàn)(較少用)
  • $bus全局事件總線:均可實現(xiàn)

2.事件總線的介紹

如果咱們的應用程序不需要類似Vuex這樣的庫來處理組件之間的數(shù)據(jù)通信,就可以考慮Vue中的事件總線來實現(xiàn)。它相當于一個全局的倉庫,任何組件都可以去這個倉庫里獲取事件,它就類似溝通橋梁的概念,就像是所有組件共用相同的事件中心,可以向該中心注冊發(fā)送事件或接收事件,所以組件都可以上下平行的通知其他組件來進行通信。

3.事件總線原理

因為所有組件對象都能看到 Vue 原型對象上的屬性和方法,所以我們可以在Vue的原型對象上通過設定一個bus對象,Vue.prototype.bus = new Vue(),此時所有的組件對象都能看到bus屬性對象。

同時由于Vue 原型對象上包含以下事件處理的方法:

  • $on(eventName, listener): 綁定自定義事件監(jiān)聽
  • $emit(eventName, data): 分發(fā)自定義事件
  • $off(eventName): 解綁自定義事件監(jiān)聽
  • $once(eventName, listener): 綁定事件監(jiān)聽, 但只能處理一次

所以我們可以通過組件調用Vue 原型對象中屬性對象bus的方法來實現(xiàn)通信。

4.總線的實現(xiàn)

4.1定義事件總線對象

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

//給Vue綁定屬性
Vue.prototype.xyz=100;
// Vue.prototype.$EventBus=vm

new Vue({
  beforeCreate(){
  //安裝事件總線
  Vue.prototype.abc=900;
  Vue.prototype.$EventBus=this
 },
  render: h => h(App),
}).$mount('#app')

4.2 向總線發(fā)送事件

語法:this.$EventBus.$emit(發(fā)送的事件名,傳遞的參數(shù))

<!--  -->
<template>
  <div id="demo01">
    <h1>Demo01組件</h1>
    <h2>從Demo02接受的收據(jù):{{msg}}</h2>
    <button @click="fasong">發(fā)送數(shù)據(jù)給Demo02</button>
  </div>
</template>

<script>
export default {
  name: "Demo01",
  data () {
    return {
      msg: ''
    }
  },
  methods: {
    test01 (data) {
      console.log(data);
      this.msg = data
    },
    fasong () {
      this.$EventBus.$emit("send", "我是Demo01頁面");
    }
  },
  mounted () {
    // console.log(this);
    // 2.接受全局的haha事件
    this.$EventBus.$on('haha', this.test01)
  }
}
</script>
<style scoped>
#demo01 {
  background-color: red;
  padding: 20px;
  margin-bottom: 20px;
}
</style>

4.3接收總線事件

語法:this.$EventBus.$on(監(jiān)聽的事件名, 回調函數(shù))

<!--  -->
<template>
  <div id="demo02">
    <h1>Demo02組件</h1>
    <button @click="sendData">發(fā)送事件給Demo01</button>
    <h2>從Demo01接受的收據(jù):{{msg}}</h2>
  </div>
</template>

<script>
export default {
  name: "Demo02",
  data () {
    return {
      msg: ''
    }
  },
  methods: {
    sendData () {
      // 觸發(fā)全局的haha事件
      this.$EventBus.$emit("haha", '老王')
    },
    display (data) {
      console.log(data);
      this.msg = data
    }
  },
  mounted () {
    // console.log(this.abc);
    console.log(this.$EventBus);
    this.$EventBus.$on("send", this.display)
  }
}
</script>
<style scoped>
#demo02 {
  background-color: blue;
  padding: 20px;
}
</style>

4.4總線事件解綁

語法:this.$EventBus.$off(要移除事件名)

在組件離開,也就是被銷毀前,要將該監(jiān)聽事件給移除,以免下次再重復創(chuàng)建監(jiān)聽。

  beforeDestory () {
    //移除事件監(jiān)聽send
    this.$EventBus.off("send")
  }

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue3?hook重構DataV的全屏容器組件詳解

    vue3?hook重構DataV的全屏容器組件詳解

    這篇文章主要為大家介紹了vue3?hook重構DataV的全屏容器組件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • vue普通加密及國密SM2、SM3和sm4的使用例子

    vue普通加密及國密SM2、SM3和sm4的使用例子

    在我的項目中,甲方要求系統(tǒng)登錄時對密碼進行加密后再傳給后端,指定使用國密SM3,下面這篇文章主要給大家介紹了關于vue普通加密及國密SM2、SM3和sm4使用的相關資料,需要的朋友可以參考下
    2022-12-12
  • vue使用iframe嵌入網(wǎng)頁的示例代碼

    vue使用iframe嵌入網(wǎng)頁的示例代碼

    本篇文章主要介紹了vue使用iframe嵌入網(wǎng)頁的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 深入理解vue中slot與slot-scope的具體使用

    深入理解vue中slot與slot-scope的具體使用

    這篇文章主要介紹了深入理解vue中slot與slot-scope的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue插件報錯:Vue.js is detected on this page.問題解決

    Vue插件報錯:Vue.js is detected on this page.問題解決

    這篇文章主要介紹了Vue插件報錯:Vue.js is detected on this page.問題解決,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • Element?Plus修改表格行和單元格樣式詳解

    Element?Plus修改表格行和單元格樣式詳解

    在使用Element Plus中的table組件展示數(shù)據(jù)時,由于需要對表格行內數(shù)據(jù)的數(shù)據(jù)進行修改,下面這篇文章主要給大家介紹了關于Element?Plus修改表格行和單元格樣式的相關資料,需要的朋友可以參考下
    2022-04-04
  • Vue組件設計之多列表拖拽交換排序功能實現(xiàn)

    Vue組件設計之多列表拖拽交換排序功能實現(xiàn)

    這篇文章主要介紹了Vue組件設計之多列表拖拽交換排序,常見的場景有單列表拖拽排序,多列表拖拽交換排序,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • vue實現(xiàn)微信分享朋友圈,發(fā)送朋友的示例講解

    vue實現(xiàn)微信分享朋友圈,發(fā)送朋友的示例講解

    下面小編就為大家分享一篇vue實現(xiàn)微信分享朋友圈,發(fā)送朋友的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue2.x通用條件搜索組件的封裝及應用詳解

    Vue2.x通用條件搜索組件的封裝及應用詳解

    這篇文章主要為大家詳細介紹了Vue2.x通用條件搜索組件的封裝及應用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Vue.js中組件中的slot實例詳解

    Vue.js中組件中的slot實例詳解

    這篇文章主要介紹了Vue.js中組件中的slot實例詳解的相關資料,需要的朋友可以參考下
    2017-07-07

最新評論

海丰县| 安泽县| 铁岭县| 左云县| 上饶县| 马山县| 攀枝花市| 宜宾市| 永嘉县| 景德镇市| 化隆| 临漳县| 平湖市| 镇巴县| 新竹市| 深圳市| 会昌县| 千阳县| 滨海县| 安溪县| 城口县| 新化县| 大足县| 咸宁市| 东平县| 嘉义县| 鄯善县| 陈巴尔虎旗| 鹤壁市| 临漳县| 玉林市| 汕头市| 柳林县| 蓝山县| 满城县| 怀化市| 山东| 黄骅市| 桃园县| 眉山市| 邯郸县|