小程序模板網(wǎng)

微信小程序生命周期詳解

發(fā)布時(shí)間:2021-05-31 14:14 所屬欄目:小程序開(kāi)發(fā)教程

在小程序中 ,通過(guò)App()來(lái)注冊(cè)一個(gè)小程序 ,通過(guò)Page()來(lái)注冊(cè)一個(gè)頁(yè)面

先來(lái)看一張小程序項(xiàng)目結(jié)構(gòu)

/

從上圖可以看出,根目錄下面有包含了app.js,app.wxss,app.json三個(gè)文件

這是小程序的全局文件,app.js是小程序邏輯 ,app.json是小程序公共設(shè)置,app.wxss是小程序公共樣式表

在app.js文件中 , 定義了一些生命周期方法 , onLaunch,onShow,onHide,onError,以及任意開(kāi)發(fā)者添加的函數(shù)或者數(shù)據(jù)(通過(guò)this可以訪問(wèn))

以下是各個(gè)生命周期方法作用和描述

onLaunch 生命周期函數(shù)--監(jiān)聽(tīng)小程序初始化 當(dāng)小程序初始化完成時(shí),會(huì)觸發(fā) onLaunch(全局只觸發(fā)一次)

onShow 生命周期函數(shù)--監(jiān)聽(tīng)小程序顯示 當(dāng)小程序啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示,會(huì)觸發(fā) onShow

onHide 生命周期函數(shù)--監(jiān)聽(tīng)小程序隱藏 當(dāng)小程序從前臺(tái)進(jìn)入后臺(tái),會(huì)觸發(fā) onHide

onError 錯(cuò)誤監(jiān)聽(tīng)函數(shù) 當(dāng)小程序發(fā)生腳本錯(cuò)誤,或者 api 調(diào)用失敗時(shí),會(huì)觸發(fā) onError 并帶上錯(cuò)誤信息

其他 Any 開(kāi)發(fā)者可以添加任意的函數(shù)或數(shù)據(jù)到 Object 參數(shù)中,用 this 可以訪問(wèn)

我們?cè)赼pp.js文件中定義以下方法 ,并打印出來(lái)

App({ 

onLaunch: function (options) { 

console.log(app.js ---onLaunch--- + JSON.stringify(options)); 

}, 

onShow:function(){ 

console.log(app.js ---onShow---); 

},

onHide:function(){ 

console.log(app.js ---onHide---); 

}, 

onError: function (msg){ 

console.log(app.js ---onError--- + msg);

}, 

globalData: { 

userInfo: null } 

})

/

這是我們打開(kāi)一個(gè)小程序打印出來(lái)的一些方法

可以看出, 打開(kāi)程序依次執(zhí)行了app.js下面onLaunch和onShow方法,以及page頁(yè)面中的onLoad,onShow和onReady方法

其中 , onLaunch, onShow 方法會(huì)返回一個(gè)參數(shù)對(duì)象, 里面包含了三個(gè)參數(shù) , path,query和scene ,path是打開(kāi)小程序的路徑

query是打開(kāi)小程序頁(yè)面url的參數(shù),scene是打開(kāi)小程序的場(chǎng)景值

小程序切換到后臺(tái)會(huì)執(zhí)行以下2個(gè)方法

/

返回小程序前臺(tái)

/

在page頁(yè)面中定義的生命周期方法

onLoad 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載

onReady 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面初次渲染完成

onShow 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面顯示

onHide 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面隱藏

onUnload 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面卸載

Page({ 

onLoad: function (options) { 

console.log(page ---onLoad---); 

}, 

onReady: function () { 

console.log(page ---onReady---);

},

onShow: function () { 

console.log(page ---onShow---); 

}, 

onHide: function () { 

console.log(page ---onHide---);

}, onUnload: function () { 

console.log(page ---onUnload---); } 

})

其中,打開(kāi)小程序后會(huì)依次執(zhí)行onLoad,onReady和onShow方法

前后臺(tái)切換會(huì)分別執(zhí)行onHide和onShow方法,

當(dāng)小程序頁(yè)面銷毀時(shí)會(huì)執(zhí)行 onUnload方法

例如,我們?cè)赿etails.js中定義onUnload方法

onUnload: function () {
    console.log(details.js  --onUnload)

},

當(dāng)我們從首頁(yè)打開(kāi)一個(gè)新頁(yè)面details.wxml,然后再關(guān)閉著這個(gè)頁(yè)面

/

從上圖可以看到頁(yè)面執(zhí)行了onUnload方法。

另外, 小程序?yàn)槲覀兲峁┝巳謹(jǐn)?shù)據(jù)管理 ,在page頁(yè)面中通過(guò)getApp()方法獲取app.js實(shí)例

例如:

我們?cè)赼pp.js通過(guò)定義一個(gè)globalData數(shù)據(jù)對(duì)象

App({
  globalData: {
    userInfo: null

}

})

// other.js

var appInstance = getApp()

console.log(appInstance.globalData)

注意:

App() 必須在 app.js 中注冊(cè),且不能注冊(cè)多個(gè)。

不要在定義于 App() 內(nèi)的函數(shù)中調(diào)用 getApp() ,使用 this 就可以拿到 app 實(shí)例。

不要在 onLaunch 的時(shí)候調(diào)用 getCurrentPages(),此時(shí) page 還沒(méi)有生成。

通過(guò) getApp() 獲取實(shí)例之后,不要私自調(diào)用生命周期函數(shù)。


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開(kāi)源 碼云倉(cāng)庫(kù):starfork
本文地址:http://www.u-renovate.com/wxmini/doc/course/25862.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢