面試官:html
vue中傳值有哪幾種類型的?vue
我:
父組件到子組件傳值,子組件到父組件,子組件到子組件面試
面試官:vuex
能具體說說嗎?數組
我:
父到子是prop,prop包括數組類型和對象類型,對象類型就是指定傳值類型,用
來作數據類型驗證,子到父是 e m i t , 而 父 組 件 監 聽 emit,而父組件監聽 emit,而父組件監聽emit觸發的事件,那子到子呢?能夠採用中央總線bus或者是vuex,其實bus和vuex不限於子到子,全部組件之間均可以進行傳值和獲取。markdown
註釋:還有父組件能夠經過ref獲取子組件的信息,而子組件也能夠經過$parent獲取父組件的信息,可是這兩種方式都會使父子組件耦合性比較高,官方不推薦使用ide
閒話少聊,下面咱們就來講說vue的中央總線bus,其實很簡單
第一步,在main.js中新new一個Vue對象atom
var bus = new Vue() export default bus
第二步:在組件中引入bus的引用spa
import bus from '../../main'
第三步:經過 e m i t 觸 發 事 件 傳 值 , 在 另 一 個 組 件 中 的 m o u n t e d 中 用 emit觸發事件傳值,在另外一個組件中的mounted中用 emit觸發事件傳值,在另一個組件中的mounted中用on監聽事件從而獲取值
組件1:code
bus.$emit(‘clickPtest’,‘rrrrrrrrrrrrrr’)
組件2:
mounted () {
bus.$on(‘clickPtest’,function (msg) {
console.log(msg)
})
},
over,結束了,是否是很簡單啊