(1)onlaunch:當小程序初始化完成時,會觸發 onLaunch(全局只觸發一次)(app.js);
(2)onLoad: 頁面加載
小程序注冊完成后,加載頁面,觸發onLoad方法。一個頁面只會調用一次,可以在 onLoad 中獲取打開當前頁面所調用的 query 參數(頁面js)。
(3)onShow: 頁面顯示
頁面載入后觸發onShow方法,顯示頁面。每次打開頁面都會調用一次(比如當小程序有后台進入到前台運行或重新進入頁面時)。
(4)onReady: 首次顯示頁面,頁面初次渲染完成,會觸發onReady方法,渲染頁面元素和樣式,一個頁面只會調用一次,代表頁面已經准備妥當,可以和視圖層進行交互。對界面的設置如wx.setNavigationBarTitle請在onReady之后設置。
(5)onHide: 頁面隱藏
當navigateTo或底部tab切換時調用。
(6)onUnload: 頁面卸載
當使用重定向方法wx.redirectTo(OBJECT)或關閉當前頁返回上一頁wx.navigateBack的時候調用。
基本上可以說執行順序為onLaunch–onLoad–onShow–onReady–onHide.
雖然說onLaunch在onLoad之前執行,但是在onLaunch里請求獲取是否有權限,等待返回值的時候Page里的onLoad事件就已經執行了。
解決辦法:
在APP里面onLanch中的網絡請求中設置判斷
if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) }
在page的onLoad中設置一個回調
app.userInfoReadyCallback = res => { if (res != '') { console.log("app.globalData.userInfo") } }
.