vue組件通信的多種方法詳解

說起組件通信,可能大傢耳熟能詳的有以下5種:

1. 父傳子

父組件通過自定義屬性給子組件傳值,子組件用props接收

2. 子傳父

父組件在子組件標簽上自定義事件,子組件通過$emit來觸發自定義事件,並且可以傳遞參數

3. 非父子組件傳值

eventBus事件總線:

可通過eventBus進行信息的發佈與訂閱(創造一個都能訪問到的事件總線)

在這裡插入圖片描述

4. vuex

vuex是專為vue.js應用程序開發的狀態管理模式,它采用集中式存儲管理程序的所有組件的狀態,解決多組件通信。不過多用於中大型項目,小型項目用它會顯得臃腫。

5. refs

通過添加ref和·$refs·配合,也可以很方便的獲取子組件,訪問調用子組件的屬性和方法
關於refs,我還另外單獨寫過一篇詳細用法的,refs的用法

除開以上5種,還有5種不那麼常見的組件通信方法:

6. $children

父組件中·$children·返回的是一個組件集合,如果清楚知道子組件的順序,也可以使用下標操作

在這裡插入圖片描述

7. $parent

子組件中this.$parent指向父組件,子組件無法直接修改父組件中的數據,可以通過this.$parent讓父組件自己去改

例如:

this.$parent.xxx=200

this.$parent.fn()

8. provide & inject

成對出現:provide和inject是成對出現的

作用:用於父組件向子孫組件傳遞數據

使用方法:

  • provide在父組件中,返回要傳給下級的數據
  • inject在需要使用這個數據的子孫組件中註入數據。(不論組件層次有多深)

在這裡插入圖片描述 

9. $attrs

用於父組件給孫組件傳遞數據

10. $listeners

用於孫組件給父組件傳遞數據

在這裡插入圖片描述

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: