vue中央事件總線(bus)

面試官: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中用 emitmountedon監聽事件從而獲取值
組件1:code

bus.$emit(‘clickPtest’,‘rrrrrrrrrrrrrr’)

組件2:

mounted () {
bus.$on(‘clickPtest’,function (msg) {
console.log(msg)
})
},

over,結束了,是否是很簡單啊

相關文章
相關標籤/搜索