詳解vue?祖先組件操作后代組件方法
前言:最近寫代碼遇到一問題:祖先級別的組件怎么操作孫子的兒子的組件方法(是不是已經(jīng)繞暈了),在網(wǎng)上搜了半天都是父子傳參,父子操作,暈暈乎乎的想起了bus(事件總線),
原理就是:是在vue原型上掛載(生命周期為實例創(chuàng)建之前beforcreate),通過這個實例里的事件派發(fā)和事件監(jiān)聽實現(xiàn)跨組件通信,設(shè)計模式叫做觀察者模式(vue上就有$on,$emit 、$off)。
話不多說了,直接看代碼吧
一、首先
// 在 src/mian.js
new Vue({
router,
store: new Vuex.Store(Store),
el: '#app',
render: h => h(App),
beforeCreate(){
Vue.prototype.$bus = this //安裝全局事件總線
}
})二、在觸發(fā)事件的的祖先組件方法內(nèi)
this.$bus.$emit("holle",666)三、后代組件(不限于后代,就是任何組件)接受傳參
mounted() {
this.$bus.$on("holle",(data)=>{
console.log(data) //666
})
},四、一定要在接收的組件銷毀鉤子里卸載掉
beforeDestroy() {
this.$bus.$off("holle")
},總結(jié):以上就是我對bus的使用和理解,有寫的不到位的地方,還望各位指正,留言區(qū)歡迎大家發(fā)言評論哦?。。?/p>
vue3 中“provide 與 inject“祖與后代組件間通信
一、其他Composition API
1.provide 與 inject
作用:實現(xiàn)祖與后代組件間通信 父傳子
套路:父組件有一個 provide 選項來提供數(shù)據(jù),后代組件有一個 inject 選項來開始使用這些數(shù)據(jù)

祖組件中:
setup(){
......
let car = reactive({name:'奔馳',price:'40萬'})
provide('car',car) // 給自己的后代組件傳遞數(shù)據(jù)
......
}后代組件中:
setup(props,context){
......
const car = inject('car') // 拿到祖先的數(shù)據(jù)
return {car}
......
}到此這篇關(guān)于vue 祖先組件操作后代組件方法的文章就介紹到這了,更多相關(guān)vue 祖先組件操作后代組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue生成二維碼QR?Code的簡單實現(xiàn)方法示例
這篇文章主要為大家介紹了vue生成二維碼QR?Code的實現(xiàn)示例詳情,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
vue+elementui(對話框中form表單的reset問題)
這篇文章主要介紹了vue+elementui(對話框中form表單的reset問題),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
Vue.js+cube-ui(Scroll組件)實現(xiàn)類似頭條效果的橫向滾動導航條
這篇文章主要介紹了Vue.js+cube-ui(Scroll組件)實現(xiàn)類似頭條效果的橫向滾動導航條,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-06-06

