小程序生命周期

1、應(yīng)用生命周期

  • 應(yīng)用生命周期書(shū)寫(xiě)在app.js文件中
  • onLaunch 小程序第一次啟動(dòng)時(shí)觸發(fā)卒蘸。應(yīng)用場(chǎng)景:用戶首次進(jìn)入獲取用戶信息雌隅,及權(quán)限
  • onShow 小程序首次顯示時(shí),或小程序與其他應(yīng)用切換顯隱時(shí)觸發(fā)缸沃。應(yīng)用場(chǎng)景:小程序重新顯示時(shí)恰起,重置數(shù)據(jù)或頁(yè)面效果
  • onHide 小程序與其他應(yīng)用切換顯隱時(shí)觸發(fā)。應(yīng)用場(chǎng)景:當(dāng)小程序隱藏時(shí)趾牧,關(guān)閉或暫停一些定時(shí)操作
  • onError 小程序代碼出現(xiàn)錯(cuò)誤時(shí)觸發(fā)检盼。應(yīng)用場(chǎng)景:錯(cuò)誤觸發(fā)時(shí),將錯(cuò)誤發(fā)送到后臺(tái)進(jìn)行記錄跟蹤
  • onPageNotFound 小程序首頁(yè)找不到時(shí)觸發(fā)翘单。應(yīng)用場(chǎng)景:找不到首頁(yè)時(shí)吨枉,跳轉(zhuǎn)到其他頁(yè)面
  • onThemeChange 微信系統(tǒng)切換主題時(shí)觸發(fā),默認(rèn)入?yún)?code>theme屬性哄芜,取值為darklight
// app.js
App({
  //小程序第一次啟動(dòng)時(shí)觸發(fā)貌亭,此處可用于獲取用戶信息
  //應(yīng)用場(chǎng)景:獲取用戶信息,登錄校驗(yàn)
  onLaunch(){
    console.log('onLaunch')
  },
  //小程序顯示時(shí)觸發(fā),切換應(yīng)用顯隱時(shí)可觸發(fā)
  //應(yīng)用場(chǎng)景:重置應(yīng)用的數(shù)據(jù)或頁(yè)頁(yè)面效果
  onShow() {
    console.log('onShow')
  },
  //小程序被隱藏時(shí)觸發(fā)
  //應(yīng)用場(chǎng)景:定時(shí)器控制
  onHide(){
    console.log('onHide')
  },
  //小程序代碼報(bào)錯(cuò)時(shí)觸發(fā)
  //應(yīng)用場(chǎng)景:收集應(yīng)用錯(cuò)誤信息认臊,傳給后臺(tái)
  onError(err){
    console.log('onError')
    console.log(err)
  },
  //首頁(yè)找不到時(shí)觸發(fā)
  //應(yīng)用場(chǎng)景:首頁(yè)不存在時(shí)圃庭,可執(zhí)行跳轉(zhuǎn)到其他頁(yè)面
  onPageNotFound(){
    wx.navigateTo({
      url: '/pages/btn/btn',
    })
    console.log('onPageNotFound')
  },
  //未處理的promise拒絕事件監(jiān)聽(tīng)函數(shù),當(dāng)前不支持android
  onUnhandledRejection(res){
    console.log('onUnhandledRejection')
    // res.reason//error對(duì)象
    // res.promise//被拒絕的promise
  },
  //系統(tǒng)切換主題時(shí)觸發(fā)
  //默認(rèn)入?yún)⒅邪瑃heme,取值為'dark','light'
  onThemeChange(param){
    console.log(onThemeChange)
  }
})

2、頁(yè)面生命周期

  • onLoad頁(yè)面加載時(shí)觸發(fā),只會(huì)調(diào)用一次,函數(shù)入?yún)⒅锌色@取頁(yè)面路徑中的參數(shù)剧腻。
    應(yīng)用場(chǎng)景:發(fā)送異步請(qǐng)求斟薇,初始化頁(yè)面數(shù)據(jù),獲取頁(yè)面?zhèn)鲄?/code>
    示例:
  onLoad(query){
    console.log('onLoad')
    console.log(query)
  }

-onShow 頁(yè)面顯示時(shí)觸發(fā)

 onShow(){
   console.log("page-onShow")
 }
  • onReady頁(yè)面初次渲染完成后觸發(fā),只會(huì)調(diào)用一次恕酸。
    對(duì)界面內(nèi)容進(jìn)行修改的api需在onready之后進(jìn)行

  • onHide頁(yè)面從前臺(tái)轉(zhuǎn)為后臺(tái)時(shí)觸發(fā)

  • onUnload 頁(yè)面銷毀時(shí)觸發(fā)

  • onPullDownRefresh 下拉刷新時(shí)觸發(fā)。
    需要在app.jsonwindow選項(xiàng)中或頁(yè)面配置中開(kāi)啟enablePullDownRefresh胯陋。
    可以通過(guò)wx.startPullDownRefresh觸發(fā)下拉刷新蕊温,調(diào)用后觸發(fā)下拉刷新動(dòng)畫(huà),效果與用戶手動(dòng)下拉刷新一致遏乔。
    當(dāng)處理完數(shù)據(jù)刷新后义矛,wx.stopPullDownRefresh可以停止當(dāng)前頁(yè)面的下拉刷新。

  • onReachBottom 上拉加載時(shí)觸發(fā)盟萨×狗可以在app.jsonwindow選項(xiàng)中或頁(yè)面配置中設(shè)置觸發(fā)距離onReachBottomDistance

  • onShareAppMessage 監(jiān)聽(tīng)“發(fā)送給朋友”按鈕的行為捻激。
    只有定義了onShareAppMessage函數(shù)制轰,彈窗中才會(huì)有發(fā)送給朋友按鈕
    函數(shù)默認(rèn)入?yún)橐粋€(gè)對(duì)象

   {
     from:"button",//轉(zhuǎn)發(fā)事件來(lái)源,button 或 menu
     target:Object,//from為button時(shí)胞谭,target指向button垃杖,否則為undefined
     webViewUrl:'',//如果有嵌入頁(yè)面,則為嵌入頁(yè)面的url
  }

該函數(shù)需return一個(gè)Object

{
     title:'轉(zhuǎn)發(fā)標(biāo)題',
     path:'轉(zhuǎn)發(fā)路徑',
     imageUrl:'自定義圖片路徑'
}
 onShareAppMessage(res){
    console.log('onShareAppMessage')
    if (res.from === 'button') {
      // 來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕
      console.log(res.target)
    }
    return {
      title: '自定義轉(zhuǎn)發(fā)標(biāo)題',
      path: '/page/user?id=123'
    }
  }
  • onAddToFavorites 點(diǎn)擊收藏時(shí)觸發(fā)丈屹,當(dāng)前頁(yè)面內(nèi)若含有嵌入頁(yè)面调俘,則默認(rèn)入?yún)⒅蟹祷豟``webViewUrl``。
    此函數(shù)需要return一個(gè)Object旺垒。用于設(shè)置收藏時(shí)的標(biāo)題彩库、圖片、及query傳參
{
     title:'收藏標(biāo)題',
     imageUrl:'http://demo.png',
     query:'name=xxx&age=xx'
}

示例:

  onAddToFavorites(res){
    console.log("onAddToFavorites")
    console.log('webViewUrl: ', res.webViewUrl)
    return {
      title: '自定義標(biāo)題',
      imageUrl: 'http://demo.png',
      query: 'name=xxx&age=xxx',
    }
  }
  • onShareTimeline 監(jiān)聽(tīng)分享到朋友圈按鈕的行為,當(dāng)前處于beta階段先蒋,僅支持android系統(tǒng)(2021-03-23)骇钦,只有定義了onShareTimeline,彈窗中才會(huì)顯示分享到朋友圈按鈕。此函數(shù)需return一個(gè)object,用于定義自定義分享內(nèi)容
   {
      title:'朋友圈列表頁(yè)上顯示標(biāo)題',
      query:'自定義頁(yè)面路徑中攜帶的參數(shù)',
      imageUrl:'自定義圖片路徑'
  }

示例:

  onShareTimeline(){
    console.log("onShareTimeline")
    return {
      title:'朋友圈列表頁(yè)上顯示標(biāo)題',
      query:'自定義頁(yè)面路徑中攜帶的參數(shù)',
      imageUrl:'自定義圖片路徑'
    }
  }
  • onResize 頁(yè)面尺寸發(fā)生變化時(shí)觸發(fā),指小程序發(fā)生橫縱屏切換時(shí)會(huì)觸發(fā)
    使小程序屏幕可以翻轉(zhuǎn)竞漾,需在json文件中設(shè)置屬性:
{
      "pageOrientation":"auto"
}

示例:

  onResize(){
    console.log('onResize')
  },
  • onPageScroll 頁(yè)面滾動(dòng)時(shí)觸發(fā)
  • onTabItemTap tab頁(yè)中點(diǎn)擊自己時(shí)才會(huì)觸發(fā)
    函數(shù)默認(rèn)入?yún)椋?/li>
  {
       index:'tabItem序號(hào)',
       pagePath:'tabItem的頁(yè)面路徑',
       text:'tabItem的按鈕文字'
  }

示例:

  onTabItemTap(tab){
    console.log('onTabItemTap')
    console.log(tab.index)
    console.log(tab.pagePath)
    console.log(tab.text)
  }

3司忱、組件生命周期

  • 組件中的生命周期寫(xiě)在lifetimes
  • created 組件剛剛被創(chuàng)建時(shí)觸發(fā),不可使用setData畴蹭,常用于給組件this添加自定義屬性字段
  • attached組件初始化完畢后觸發(fā)坦仍,絕大多數(shù)初始化工作此處進(jìn)行
  • ready 在組件在視圖層布局完成后執(zhí)行,個(gè)人理解類似于vue中的mounted
  • moved在組件實(shí)例被移動(dòng)到節(jié)點(diǎn)樹(shù)另一個(gè)位置時(shí)執(zhí)行
  • detached組件銷毀時(shí)觸發(fā) ,類vue中的destroyed
  • error 每當(dāng)組件方法拋出錯(cuò)誤時(shí)執(zhí)行
    示例:
lifetimes: {
    attached: function() {
      // 在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)時(shí)執(zhí)行
    },
    detached: function() {
      // 在組件實(shí)例被從頁(yè)面節(jié)點(diǎn)樹(shù)移除時(shí)執(zhí)行
    },
  }

4叨襟、組件所在頁(yè)面的生命周期

  • show 組件所在的頁(yè)面被展示時(shí)執(zhí)行
  • hide 組件所在的頁(yè)面被隱藏時(shí)執(zhí)行
  • resize 組件所在的頁(yè)面尺寸變化時(shí)執(zhí)行
Component({
  pageLifetimes: {
    show: function() {
      // 頁(yè)面被展示
    },
    hide: function() {
      // 頁(yè)面被隱藏
    },
    resize: function(size) {
      // 頁(yè)面尺寸變化
    }
  }
})

5繁扎、小程序生命周期圖示

mini-pro-lifeTime.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姚垃,老刑警劉巖积糯,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件川慌,死亡現(xiàn)場(chǎng)離奇詭異祠乃,居然都是意外死亡梦重,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)亮瓷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忍饰,“玉大人,你說(shuō)我怎么就攤上這事寺庄。” “怎么了斗塘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵馍盟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我贞岭,道長(zhǎng),這世上最難降的妖魔是什么乳讥? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任雹熬,我火速辦了婚禮,結(jié)果婚禮上臭挽,老公的妹妹穿的比我還像新娘宠漩。我一直安慰自己室囊,他們只是感情好雕崩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著融撞,像睡著了一般尝偎。 火紅的嫁衣襯著肌膚如雪捉貌。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音趁窃,去河邊找鬼牧挣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛醒陆,可吹牛的內(nèi)容都是我干的瀑构。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼刨摩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寺晌!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起澡刹,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呻征,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后罢浇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體陆赋,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年嚷闭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了攒岛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胞锰,死狀恐怖灾锯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗅榕,我是刑警寧澤顺饮,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站凌那,受9級(jí)特大地震影響领突,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜案怯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一君旦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嘲碱,春花似錦金砍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扶欣,卻和暖如春鹅巍,著一層夾襖步出監(jiān)牢的瞬間千扶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工骆捧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留澎羞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓敛苇,卻偏偏與公主長(zhǎng)得像妆绞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枫攀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 今天感恩節(jié)哎括饶,感謝一直在我身邊的親朋好友。感恩相遇来涨!感恩不離不棄图焰。 中午開(kāi)了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,564評(píng)論 0 11
  • 彩排完蹦掐,天已黑
    劉凱書(shū)法閱讀 4,216評(píng)論 1 3
  • 沒(méi)事就多看看書(shū)技羔,因?yàn)楦褂性?shī)書(shū)氣自華,讀書(shū)萬(wàn)卷始通神笤闯。沒(méi)事就多出去旅游堕阔,別因?yàn)闆](méi)錢(qián)而找借口棍厂,因?yàn)橹灰闶〕詢€用颗味,來(lái)...
    向陽(yáng)之心閱讀 4,783評(píng)論 3 11
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒牺弹。表情可以傳達(dá)很多信息浦马。高興了當(dāng)然就笑了,難過(guò)就哭了张漂。兩者是相互影響密不可...
    Persistenc_6aea閱讀 124,992評(píng)論 2 7