vue $emit 同步調用

標題換一種說法:vue $emit 調用父組件異步方法,執行完畢後再執行子組件的某方法

使用回調的形式

異步方法執行完成的時間只有父組件知道,如果子組件需要在異步方式執行之後執行某些邏輯,那麼只能將這些邏輯封裝成一個方法傳遞到父組件,由父組件來觸發執行。

父組件

// 父組件的html中添加事件 @getData="getData"
methods : {
	getData(params, callback) {
		console.log("子組件的傳遞到父組件的參數", params);
		
		console.log("模擬發送後臺異步請求,延遲3s...");
		setTimeout(() => {
			//.....
			console.log("異步請求結束,執行回調函數");
			callback("父組件666")
		}, 3000)
	}
} 

子組件

// 通過 $emit 觸發父組件的方法
// 參數:觸發的事件名稱、事件參數,事件參數
// 把方法當做事件參數傳遞到父組件,由父組件調用執行。
this.$emit('getData', 10, (res)=> {
	console.log("父組件的返回結果:", res); //由父組件調用
})

reference:
vue $emit 調用父組件異步方法,執行完畢後再執行子組件的某方法


end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章