這類問題 首先分類 表明了解的比較多 具體就沒說完 或者漏了 面試官也不會計較很多 組件通信的四大類 父與子 子與父 子與子 跨層級 在細說各種方式 加入自己的理解
1、props和$emit 父組件向子組件傳遞數據是通過prop傳遞的,子組件傳遞數據給父組件是通過$emit觸發事件
2、$attrs和$listeners
3、中央事件總線 bus 上面兩種方式處理的都是父子組件之間的數據傳遞,而如果兩個組件不是父子關系呢?這種情況下可以使用中央事件總線的方式。新建一個Vue事件bus對象,然后通過bus.$emit觸發事件,bus.$on監聽觸發的事件。
4、provide和inject 父組件中通過provider來提供變量,然后在子組件中通過inject來注入變量。不論子組件有多深,只要調用了inject那么就可以注入provider中的數據。而不是局限于只能從當前父組件的prop屬性來獲取數據,只要在父組件的生命周期內,子組件都可以調用。
5、v-model 父組件通過v-model傳遞值給子組件時,會自動傳遞一個value的prop屬性,在子組件中通過this.$emit(‘input’,val)自動修改v-model綁定的值
6、$parent和$children
7、boradcast和dispatch
8、vuex處理組件之間的數據交互 如果業務邏輯復雜,很多組件之間需要同時處理一些公共的數據,這個時候才有上面這一些方法可能不利于項目的維護,vuex的做法就是將這一些公共的數據抽離出來,然后其他組件就可以對這個公共數據進行讀寫操作,這樣達到了解耦的目的。