vue組件通信的多種方法詳解
說(shuō)起組件通信,可能大家耳熟能詳?shù)挠幸韵?種:
1. 父?jìng)髯?/h2>
父組件通過(guò)自定義屬性給子組件傳值,子組件用props接收
2. 子傳父
父組件在子組件標(biāo)簽上自定義事件,子組件通過(guò)$emit來(lái)觸發(fā)自定義事件,并且可以傳遞參數(shù)
3. 非父子組件傳值
eventBus事件總線:
可通過(guò)eventBus進(jìn)行信息的發(fā)布與訂閱(創(chuàng)造一個(gè)都能訪問(wèn)到的事件總線)

4. vuex
vuex是專為vue.js應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式,它采用集中式存儲(chǔ)管理程序的所有組件的狀態(tài),解決多組件通信。不過(guò)多用于中大型項(xiàng)目,小型項(xiàng)目用它會(huì)顯得臃腫。
5. refs
通過(guò)添加ref和·$refs·配合,也可以很方便的獲取子組件,訪問(wèn)調(diào)用子組件的屬性和方法
關(guān)于refs,我還另外單獨(dú)寫過(guò)一篇詳細(xì)用法的,refs的用法
除開(kāi)以上5種,還有5種不那么常見(jiàn)的組件通信方法:
6. $children
父組件中·$children·返回的是一個(gè)組件集合,如果清楚知道子組件的順序,也可以使用下標(biāo)操作

7. $parent
子組件中this.$parent指向父組件,子組件無(wú)法直接修改父組件中的數(shù)據(jù),可以通過(guò)this.$parent讓父組件自己去改
例如:
this.$parent.xxx=200
this.$parent.fn()
8. provide & inject
成對(duì)出現(xiàn):provide和inject是成對(duì)出現(xiàn)的
作用:用于父組件向子孫組件傳遞數(shù)據(jù)
使用方法:
- provide在父組件中,返回要傳給下級(jí)的數(shù)據(jù)
- inject在需要使用這個(gè)數(shù)據(jù)的子孫組件中注入數(shù)據(jù)。(不論組件層次有多深)
9. $attrs
用于父組件給孫組件傳遞數(shù)據(jù)
10. $listeners
用于孫組件給父組件傳遞數(shù)據(jù)

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
vue實(shí)現(xiàn)純前端表格滾動(dòng)分頁(yè)加載
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)純前端表格滾動(dòng)分頁(yè)加載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
解決vue?change阻止默認(rèn)事件問(wèn)題
這篇文章主要介紹了vue?change阻止默認(rèn)事件問(wèn)題,使用事件 @click.stop.native.prevent 解決 (使用@click.stop 或者 @click.prevent都無(wú)效,直接報(bào)錯(cuò)還阻止不了事件),需要的朋友可以參考下2022-01-01
Vue2項(xiàng)目中對(duì)百度地圖的封裝使用詳解
近期項(xiàng)目需求相關(guān)地圖限定使用百度地圖,功能比較簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于Vue2項(xiàng)目中對(duì)百度地圖的封裝使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
在vue項(xiàng)目中利用popstate處理頁(yè)面返回的操作介紹
這篇文章主要介紹了在vue項(xiàng)目中利用popstate處理頁(yè)面返回的操作介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Vue3+Vite+ElementPlus管理系統(tǒng)常見(jiàn)問(wèn)題
本文記錄了使用Vue3+Vite+ElementPlus從0開(kāi)始搭建一個(gè)前端工程會(huì)面臨的常見(jiàn)問(wèn)題,沒(méi)有技術(shù)深度,但全都是解決實(shí)際問(wèn)題的干貨,可以當(dāng)作是問(wèn)題手冊(cè)以備后用,感興趣的朋友參考下2023-12-12

