App
App(Object object)
注册小程序,接受一個Object參數,其指定小程序的生命週期回檔等。
App()必須在app.js中調用,必須調用且只能調用一次,不然會出現無法預期的後果。
參數
Object object
| 内容 | 類型 | 預設值 | 必填 | 說明 |
|---|---|---|---|---|
| onLaunch | function | - | 否 | 生命週期回檔——監聽小程序初始化 |
| onShow | function | - | 否 | 生命週期回檔——監聽小程序啟動或切換到前臺 |
| onHide | function | - | 否 | 生命週期回檔——監聽小程序切換到後臺 |
| onError | function | - | 否 | 錯誤監聽函數 |
| onPageNotFound | function | - | 否 | 頁面不存在監聽函數 |
| onUnhandledRejection | function | - | 否 | 未處理的Promise拒絕事件監聽函數 |
| onThemeChange | function | - | 否 | 監聽系統主題變化 |
| 其他 | any | - | 否 | 開發者可以添加任意的函數或數據變量到Object參數中,用this可以訪問 |
關於小程序前後臺的定義和小程序的運行機制,請參攷 小程序運行機制 章節
onLaunch(Object object)
小程序初始化完成時觸發,全域只觸發一次,參數也可以使用 wx.getLaunchOptionsSync 獲取。
參數:與 wx.getLaunchOptionsSync 一致。
onShow(Object object)
小程序啟動,或從後臺進入前臺顯示時觸發,也可以使用 wx.onAppShow 綁定監聽。
參數:與 wx.onAppShow 一致。
onHide()
小程序從前臺進入後臺時觸發,也可以使用 wx.onAppHide 綁定監聽。
onError(String error)
小程序發生腳本錯誤或API調用報錯時觸發,也可以使用 wx.onError 綁定監聽。
參數:與 wx.onError 一致。
onPageNotFound(Object object)
小程序要打開的頁面不存在時觸發,也可以使用 wx.onPageNotFound 綁定監聽,注意事項請參攷 wx.onPageNotFound
參數:與 wx.onPageNotFound 一致。
示例代碼:
js
App({
onPageNotFound(res) {
wx.redirectTo({
url: 'pages/...'
}) // If it were Tabs Page, use the wx.switchTab
}
})onUnhandledRejection(Object object)
小程序有未處理的Promise拒絕時觸發,也可以使用 wx.onUnhandledRejection 綁定監聽,注意事項請參攷 wx.onUnhandledRejection
參數:與 wx.onUnhandledRejection 一致。
onThemeChange(Object object)
系統切換主題時觸發,也可以使用 wx.onThemeChange 綁定監聽。
參數:與 wx.onThemeChange 一致。
示例代碼:
js
App({
onLaunch (options) {
// Do something initial when launch.
},
onShow (options) {
// Do something when show.
},
onHide () {
// Do something when hide.
},
onError (msg) {
console.log(msg)
},
globalData: 'I am global data'
})AppObject getApp(Object object)
獲取到小程序全域唯一的App實例。
參數
Object object
| 内容 | 類型 | 預設值 | 必填 | 說明 |
|---|---|---|---|---|
| allowDefault | boolean | false | 否 | 在App未定義時返回默認實現。 當App被調用時,默認實現中定義的内容會被覆蓋合併到App中,一般用於 獨立分包 |
示例代碼:
js
// other.js
var appInstance = getApp()
console.log(appInstance.globalData) // I am global data注意事項
不要在定義於App()內的函數中,或調用App前調用getApp(),使用this就可以拿到app實例;
通過getApp()獲取實例之後,不要私自調用生命週期函數。