目錄
2025 最新的 Vue.js 兄弟組件通信教學

Vue.js 是一個輕量級的 JavaScript 框架,讓開發者能快速開發高品質的 Web 應用程式。這篇文章將探討如何在 Vue.js 中實現兄弟組件之間的通信,使用 2025 最新的語法與最佳實踐,確保你能輕鬆掌握這一重要概念。
兄弟組件之間的通信概述
在 Vue.js 中,兄弟組件之間的通信可以透過兩種主要方式完成:
- 使用 
$emit來傳遞資料 - 使用 
$on來接收資料 
使用 $emit 來傳遞資料
$emit 是 Vue.js 中用於傳遞資料的方法,讓開發者能夠在不同的組件之間傳遞資料。以下是一個示範,假設我們有一個父組件 Parent 和一個子組件 Child:
// Child.vue
export default {
  methods: {
    sendData() {
      this.$emit('sendData', {
        data: 'Hello World!'
      });
    }
  }
}
// Parent.vue
export default {
  methods: {
    receiveData(data) {
      console.log(data); // { data: 'Hello World!' }
    }
  },
  components: {
    Child
  }
}
使用 $on 來接收資料
接收資料的方式是透過 $on,讓開發者能夠在不同組件之間接收資料。以下是使用 $on 的範例:
// Child.vue
export default {
  methods: {
    sendData() {
      this.$emit('sendData', {
        data: 'Hello World!'
      });
    }
  }
}
// Parent.vue
export default {
  methods: {
    receiveData(data) {
      console.log(data); // { data: 'Hello World!' }
    }
  },
  components: {
    Child
  },
  created() {
    this.$on('sendData', this.receiveData);
  }
}
總結來說,Vue.js 提供了一個簡單且有效的方法來建立兄弟組件之間的通信。使用 $emit 來傳遞資料,使用 $on 來接收資料,即可輕鬆地在不同的組件之間進行通信。
常見問題解答 (Q&A)
Q1: Vue.js 中為什麼要使用 $emit 和 $on?
A: $emit 和 $on 是 Vue.js 提供的事件系統,能夠有效實現組件之間的通信,讓資料流動更為靈活。
Q2: 兄弟組件通信的替代方案是什麼?
A: 除了 $emit 和 $on,開發者還可以使用 Vuex 或提供者/消費者模式來管理全局狀態,實現組件之間的通信。
Q3: 如果我在使用 $emit 時遇到問題,我該怎麼辦?
A: 你可以檢查事件名稱是否正確,並確保父組件正確地註冊了相應的事件處理函數。
---