欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Vue3中使用event?bus(事件總線(xiàn))的步驟詳解

 更新時(shí)間:2025年01月12日 11:32:28   作者:碼嘍的自我修養(yǎng)  
在Vue?3中,可以通過(guò)創(chuàng)建一個(gè)事件總線(xiàn)(event?bus)來(lái)實(shí)現(xiàn)組件之間的通信,要在Vue?3中使用事件總線(xiàn),主要步驟有:1、創(chuàng)建一個(gè)新的Vue實(shí)例作為事件總線(xiàn),2、在組件中引入并使用該事件總線(xiàn),以下是詳細(xì)的步驟和示例,需要的朋友可以參考下

一、創(chuàng)建事件總線(xiàn)

在Vue 3中,創(chuàng)建事件總線(xiàn)的方式與Vue 2有所不同。Vue 3不再直接使用Vue實(shí)例作為事件總線(xiàn),而是使用一個(gè)空的對(duì)象或使用 mitt 庫(kù)。下面是如何創(chuàng)建一個(gè)簡(jiǎn)單的事件總線(xiàn):

// bus.js
 
import mitt from 'mitt';
 
 
const emitter = mitt();
 
 
export default emitter;

二、在組件中使用事件總線(xiàn)

創(chuàng)建好事件總線(xiàn)后,可以在組件中引入并使用它來(lái)觸發(fā)和監(jiān)聽(tīng)事件。以下是如何在兩個(gè)組件中使用事件總線(xiàn)進(jìn)行通信的示例:

1、在發(fā)送事件的組件中

// SenderComponent.vue
 
<template>
 
  <button @click="sendMessage">Send Message</button>
 
</template>
 
 
<script>
 
import emitter from './bus';
 
export default {
 
  methods: {
 
    sendMessage() {
 
      emitter.emit('message', 'Hello from SenderComponent');
 
    }
 
  }
 
}
 
</script>
 

三、詳細(xì)解釋

1、為什么使用事件總線(xiàn)

事件總線(xiàn)是一種輕量級(jí)的解決方案,用于在Vue組件之間進(jìn)行通信,尤其是在沒(méi)有直接父子關(guān)系的組件之間。它的主要優(yōu)勢(shì)包括:

  • 簡(jiǎn)潔:只需要一個(gè)簡(jiǎn)單的對(duì)象或庫(kù)即可實(shí)現(xiàn)。
  • 靈活:可以在任何地方觸發(fā)和監(jiān)聽(tīng)事件。
  • 低耦合:組件之間不需要知道彼此的存在。

2、使用mitt庫(kù)的優(yōu)勢(shì)

在Vue 3中,推薦使用 mitt 庫(kù)來(lái)創(chuàng)建事件總線(xiàn),因?yàn)樗p量、性能更好,而且與Vue 3的Composition API兼容。mitt庫(kù)的主要優(yōu)點(diǎn)包括:

  • 輕量級(jí):只有幾百字節(jié)大小。
  • 簡(jiǎn)單易用:API非常簡(jiǎn)潔,只有 emit 和 on 等少數(shù)幾個(gè)方法。
  • 性能優(yōu)越:由于其實(shí)現(xiàn)簡(jiǎn)單,性能開(kāi)銷(xiāo)極低。

3、Vue 3中事件總線(xiàn)的替代方案

  • Vuex:適用于需要全局狀態(tài)管理的復(fù)雜應(yīng)用。
  • Provide/Inject:適用于祖先和后代組件之間的通信。
  • Composition API:通過(guò)組合函數(shù)共享邏輯。

四、實(shí)例說(shuō)明

以下是一個(gè)完整的實(shí)例,展示了如何使用事件總線(xiàn)在兩個(gè)沒(méi)有直接關(guān)系的組件之間進(jìn)行通信。

1、創(chuàng)建一個(gè)新的Vue項(xiàng)目

首先,創(chuàng)建一個(gè)新的Vue 3項(xiàng)目:

npm init vue@latest

按照提示創(chuàng)建項(xiàng)目后,安裝 mitt 庫(kù):

npm install mitt

2、創(chuàng)建事件總線(xiàn)

在項(xiàng)目根目錄下創(chuàng)建一個(gè) bus.js 文件,并添加如下代碼:

import mitt from 'mitt';
 
const emitter = mitt();
 
export default emitter;

3、發(fā)送事件的組件

在 src/components 目錄下創(chuàng)建一個(gè) SenderComponent.vue 文件,并添加如下代碼:

<template>
 
  <button @click="sendMessage">Send Message</button>
 
</template>
 
 
<script>
 
import emitter from '../bus';
 
export default {
 
  methods: {
 
    sendMessage() {
 
      emitter.emit('message', 'Hello from SenderComponent');
 
    }
 
  }
 
}
 
</script>

4、接收事件的組件

在 src/components 目錄下創(chuàng)建一個(gè) ReceiverComponent.vue 文件,并添加如下代碼:

<template>
  <div>
    <p>Received Message: {{ message }}</p>
  </div>
</template>
 
<script>
import emitter from '../bus';
export default {
  data() {
    return {
      message: ''
    }
  },
 
  mounted() {
    emitter.on('message', (msg) => {
      this.message = msg;
    });
  },
 
  beforeUnmount() {
    emitter.off('message');
  }
}
 
</script>
 

5、在主應(yīng)用中使用組件

 src/App.vue 文件中,添加如下代碼:

<template>
  <div id="app">
    <SenderComponent />
    <ReceiverComponent />
  </div>
</template>
 
<script>
 
import SenderComponent from './components/SenderComponent.vue';
import ReceiverComponent from './components/ReceiverComponent.vue';
export default {
  components: {
    SenderComponent,
    ReceiverComponent
  }
}
 
</script>
 

到此這篇關(guān)于在Vue3中使用event bus(事件總線(xiàn))的步驟詳解的文章就介紹到這了,更多相關(guān)Vue3使用event bus(事件總線(xiàn))內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • axios發(fā)送post請(qǐng)求springMVC接收不到參數(shù)的解決方法

    axios發(fā)送post請(qǐng)求springMVC接收不到參數(shù)的解決方法

    下面小編就為大家分享一篇axios發(fā)送post請(qǐng)求springMVC接收不到參數(shù)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 詳解用vue-cli來(lái)搭建vue項(xiàng)目和webpack

    詳解用vue-cli來(lái)搭建vue項(xiàng)目和webpack

    本篇文章主要介紹了詳解用vue-cli來(lái)搭建vue項(xiàng)目和webpack,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • vue里面使用mui的彈出日期選擇插件實(shí)例

    vue里面使用mui的彈出日期選擇插件實(shí)例

    今天小編就為大家分享一篇vue里面使用mui的彈出日期選擇插件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue中v-text / v-html使用實(shí)例代碼詳解

    vue中v-text / v-html使用實(shí)例代碼詳解

    這篇文章主要介紹了vue中v-text / v-html使用實(shí)例代碼詳解,非常不錯(cuò),代碼簡(jiǎn)單易懂,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • vue項(xiàng)目中v-model父子組件通信的實(shí)現(xiàn)詳解

    vue項(xiàng)目中v-model父子組件通信的實(shí)現(xiàn)詳解

    vue.js,是一個(gè)構(gòu)建數(shù)據(jù)驅(qū)動(dòng)的 web 界面的庫(kù)。Vue.js 的目標(biāo)是通過(guò)盡可能簡(jiǎn)單的 API 實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中v-model父子組件通信實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • vue打包后dist文件在本地啟動(dòng)運(yùn)行的步驟

    vue打包后dist文件在本地啟動(dòng)運(yùn)行的步驟

    這篇文章主要給大家介紹了關(guān)于vue打包后dist文件在本地啟動(dòng)運(yùn)行的簡(jiǎn)單步驟,文中通過(guò)代碼示例以及圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Vue使用wangEditor實(shí)現(xiàn)自定義粘貼功能

    Vue使用wangEditor實(shí)現(xiàn)自定義粘貼功能

    這篇文章主要為大家詳細(xì)介紹了Vue如何使用wangEditor實(shí)現(xiàn)自定義粘貼功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • vue組件與復(fù)用詳解

    vue組件與復(fù)用詳解

    組件 (Component) 是 Vue.js 最強(qiáng)大的功能之一。組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼。這篇文章主要介紹了vue組件與復(fù)用,需要的朋友可以參考下
    2018-04-04
  • vue中post請(qǐng)求以a=a&b=b 的格式寫(xiě)遇到的問(wèn)題

    vue中post請(qǐng)求以a=a&b=b 的格式寫(xiě)遇到的問(wèn)題

    這篇文章主要介紹了vue中post請(qǐng)求以a=a&b=b 的格式寫(xiě)遇到的問(wèn)題,需要的朋友可以參考下
    2018-04-04
  • vue中本地靜態(tài)圖片的路徑應(yīng)該怎么寫(xiě)

    vue中本地靜態(tài)圖片的路徑應(yīng)該怎么寫(xiě)

    這篇文章主要介紹了vue中本地靜態(tài)圖片的路徑應(yīng)該怎么寫(xiě),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評(píng)論