我們之前講過一期組件通信,其中有一個vue2的全局事件總線,通過在Vue原型對象身上創(chuàng)建一個名為Bus的方法,因為Vue的原型對象的屬性的方法都可以被Vue實例對象和VC組件實例對象訪問得到,所以通過全局事件總線,兄弟組件之間也能傳值。
而vue3沒有了全局事件總線,$on和$emit無法使用了,如果想要使用全局事件總線就需要借助第三方插件。
這里我們呢使用mitt這個插件。
//npm npm install mitt -s //yarn yarn add mitt
通過以上代碼可以下載mitt。然后我們可以封裝mitt為一個單獨的js文件。
import mitt from 'mitt' const bus = {} const emitter = mitt() bus.$on = emitter.on bus.$off = emitter.off bus.$emit = emitter.emit export default bus
然后在main.js內(nèi)引用該文件
import Bus from ‘./utils/myBus’
import導(dǎo)入后,通過app.fig.globalProperties就能把他變成全局事件,$EventBus可以自定義名字,不重要
app.config.globalProperties.$EventBus = Bus
然后就可正常使用了。使用方法可以參考上一期,需要注意,因為vue3沒有this了,我們直接寫就可以,根據(jù)import引入的名字來調(diào)用。
上一篇: vue3中監(jiān)聽寫法的改變
下一篇: 兩種css+jq的隱藏式搜索欄