1. 程式人生 > 其它 >eventBus第一次傳參失敗以及creted內的值在mounted內獲取失敗處理

eventBus第一次傳參失敗以及creted內的值在mounted內獲取失敗處理

1、eventBus在兄弟元件之間傳值如果且觸發了路由跳轉(A頁面跳轉至B頁面)會導致第一次傳值失敗

原因:B頁面沒有被建立導致傳送失敗,如果在B頁面creted內使用bus.$on會發生bus.$on先觸發,A頁面的bus.$emit後觸發,導致B頁面接收不到引數

解決方法:

在傳送方A頁面使用this.this.$nextTick(()=>{})
this.$nextTick(() => {
bus.$emit('eleOpen', this.openEle)
console.log('bus.$emit')
})
在接收方B頁面正常接收即可

2、在created裡面發起請求或接收兄弟元件的引數,在mounted內無法呼叫到created內參數值

原因:雖然按照生命週期是created在前,mounted在後,但生命週期非同步載入需要時間,如果延遲時間是可以獲取到資料的,但是問題是不知道需要延遲多久,所以最好不要使用定時器處理。

解決方法:

1.在created生命週期內進行非同步資料的請求,且將獲取到的資料賦值給this.data

2.此時如果在mounted生命週期裡獲取this.data是獲取不到的。

3.不要在mounted內處理資料在watch內處理即可

在data定義資料
data(){
isOpenDialog: false
}
在watch內監聽
watch: {
isOpenDialog() {
this.$nextTick(() => {
// 在這裡可以獲取和處理資料
})
}
},