父子組件
props/event
子組件有時需要與父組件進行溝通,溝通的方式就是子組件 $emit 傳遞一個自定義事件,父組件通過監(jiān)聽這個事件來做進一步動作。而父組件與子組件通信則使用 props來傳遞一個綁定在子組件上的屬性,這個屬性值來源于父組件。
parent/children
父組件中使用 $children 操作子組件。并在父組件通過 $children 訪問到已經(jīng)在在父組件當中引入了的子組件, $children 返回的是子組件列表,是一個數(shù)組。
子組件中子組件可通過 $parent 來訪問父組件里的數(shù)據(jù)和定義的方法,如修改父組件中的$data。
ref
父組件中可為子組件定義一個ref屬性,然后父組件里通過$ref[對象子組件上定義的屬性名來訪問子組件里的數(shù)據(jù)
provide/inject
適用于祖先和后代關系的組件間的通信,祖先元素通過 provide 提供一個值,后代元素則通過 inject 獲取到這個值。這個值默認是非響應的,如果是對象那么則是響應式的:
兄弟組件
bus
在Vue . 2.x 中, 推薦使用一個空的Vue 實例作為中央事件總線( bus ),也就是一個中介。
通信的組件必須都引入這個實例例。
通過bus.$emit() 傳遞出一個自定義事件
在需要進行操作的組件里,通過bus.$on 監(jiān)聽這個自定義事件, 進行操作。
Vuex
Vuex 是Vue推出的狀態(tài)管理工具
Vuex 就是把需要共享的變量量全部存儲在一個對象里面,然后將這個對象放在頂層組件中供其他組件使用。這么說吧,將vue想作是一個js?文件、組件是函數(shù),那么vuex就是一個全局變量,只是這個“全局變量”包含了一些特定的規(guī)則而已。
通過$store 這個對象訪問數(shù)據(jù)和調用在Vuex 里定義的公共方法。
跨級組件
bus vuex provide inject