VUE組件之間的通訊方式
時間:2023-10-09 來源:華清遠見
什么是VUE組件通訊
VUE組件通訊指的是在VUE組件之間進行數據或事件的傳遞。在實際開發中,組件通訊是非常重要的,因為一個頁面可能會包含多個組件,這些組件之間需要相互協作才能完成整個頁面的功能。
VUE組件通訊的場景有哪些
(1)父組件向子組件傳遞數據,比如商品列表組件向商品詳情組件傳遞商品信息。
(2)子組件向父組件傳遞數據或事件,比如在評論組件中提交評論后,需要通知父組件更新評論列表。
(3)兄弟組件之間的通訊,比如在購物車組件中,購物車列表和結算組件之間需要相互通訊。
(4)跨級組件的通訊,比如在頁面頭部組件中,需要向頁面底部組件傳遞一些信息。
VUE組件通訊的方式
(1)props和$emit
props是父組件向子組件傳遞數據的方式,可以通過在子組件中聲明props來接收父組件傳遞的數據。
Refer to: Props | Vue.js (vuejs.org)
$emit是子組件向父組件傳遞數據或事件的方式,子組件可以通過$emit觸發一個自定義事件,并向父組件傳遞數據。
Refer to: 組件實例 | Vue.js (vuejs.org)
父組件代碼:


子組件的代碼

在上面的代碼中,父組件向子組件傳遞了一個name屬性,子組件通過props接收了這個屬性,并在模板中顯示了出來。當用戶點擊“Change Name”按鈕時,子組件觸發了一個名為“changeName”的自定義事件,并向父組件傳遞了一個新的名字newName。父組件通過@changeName監聽這個事件,并執行handleChangeName方法來更新頁面上的名字。
(2)$parent和$children
$parent是子組件訪問父組件的方法,$children是父組件訪問子組件的方法。通過$parent和$children,我們可以訪問到組件樹中的任意一個組件。
Refer to: 組件實例 | Vue.js (vuejs.org)
父組件代碼:

子組件代碼

在上面的代碼中,子組件通過$parent訪問到了父組件,并調用了父組件中的handleChildClick方法。
(3)$refs
$refs是訪問組件實例的方法,可以通過$refs來訪問組件的屬性和方法。
Refer to: 組件實例 | Vue.js (vuejs.org)
父組件代碼:

子組件代碼:

在上面的代碼中,父組件通過ref屬性給子組件起了一個名字“child”,并在handleClick方法中通過this.$refs.child訪問到了子組件實例,并調用了子組件中的changeName方法。
總結
VUE組件通訊是非常重要的,通過不同的通訊方式可以實現組件之間的數據和事件傳遞。在實際開發中,我們需要根據不同的場景選擇合適的通訊方式,以便更好地完成頁面的功能。

