eventBus第一次傳參失敗以及creted內的值在mounted內獲取失敗處理
阿新 • • 發佈:2021-10-28
原因: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(() => {
// 在這裡可以獲取和處理資料
})
}
},