uni-app 支持如下應(yīng)用生命周期函數(shù):
函數(shù)名 | 說明 |
---|---|
onLaunch | 當(dāng)uni-app 初始化完成時(shí)觸發(fā)(局部只觸發(fā)一次) |
onOpen | 當(dāng)uni-app 啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示 |
onHide | 當(dāng)uni-app 從前臺(tái)進(jìn)入后臺(tái) |
onError | 當(dāng)uni-app 報(bào)錯(cuò)時(shí)觸發(fā) |
onUniNViewMessage | 對(duì)nvue 頁(yè)面發(fā)送的數(shù)據(jù)進(jìn)行監(jiān)聽,可參考 nvue 向 vue 通訊 |
onUnhandledRejection | 對(duì)未處理的 Promise 拒絕事件監(jiān)聽函數(shù)(2.8.1+) |
onPageNotFound | 頁(yè)面不存在監(jiān)聽函數(shù) |
onThemeChange | 監(jiān)聽系統(tǒng)主題變化 |
注意
示例代碼
<script>
// 只能在App.vue里監(jiān)聽?wèi)?yīng)用的生命周期
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
uni-app 支持如下頁(yè)面生命周期函數(shù):
函數(shù)名 | 說明 | 平臺(tái)差異說明 | 最低版本 |
---|---|---|---|
onInit | 監(jiān)聽頁(yè)面初始化,其參數(shù)通onLoad參數(shù),為上個(gè)頁(yè)面?zhèn)鬟f的數(shù)據(jù),參數(shù)類型為Object(用于頁(yè)面?zhèn)鲄ⅲ|發(fā)時(shí)機(jī)早于onLoad | 百度小程序 | 3.1.0+ |
負(fù)載 | 監(jiān)聽頁(yè)面加載,其參數(shù)為上個(gè)頁(yè)面?zhèn)鬟f的數(shù)據(jù),參數(shù)類型為 Object(用于頁(yè)面?zhèn)鲄ⅲ瑓⒖际纠?/td> |
|
|
展出 | 監(jiān)聽頁(yè)面顯示。頁(yè)面每次出現(xiàn)在屏幕上都觸發(fā),包括從下級(jí)頁(yè)面點(diǎn)返回進(jìn)入當(dāng)前頁(yè)面 | ||
onReady | 監(jiān)聽頁(yè)面初次渲染完成。注意如果渲染速度快,會(huì)在頁(yè)面進(jìn)入動(dòng)畫完成前觸發(fā) | ||
隱藏 | 監(jiān)聽頁(yè)面隱藏 | ||
onUnload | 監(jiān)聽頁(yè)面卸載 | ||
onResize | 監(jiān)聽窗口尺寸變化 | App,微信小程序 | |
onPullDownRefresh | 監(jiān)聽用戶拖動(dòng)動(dòng)作,一般用于拖動(dòng)刷新,參考示例 | ||
onReachBottom | 頁(yè)面上拉觸底事件的處理函數(shù) | ||
onTabItemTap | 單擊選項(xiàng)卡時(shí)觸發(fā),參數(shù)為對(duì)象,具體見以下注意事項(xiàng) | 微信小程序,百度小程序,H5,App(自定義組件模式) | |
onShareAppMessage | 用戶點(diǎn)擊右上角分享 | 微信小程序,百度小程序,字節(jié)跳動(dòng)小程序,支付寶小程序 | |
onPageScroll | 監(jiān)聽頁(yè)面滾動(dòng),參數(shù)為對(duì)象 | nvue 暫不支持 | |
onNavigationBarButtonTap | 監(jiān)聽原生標(biāo)題欄按鈕點(diǎn)擊事件,參數(shù)為對(duì)象 | 5+ App,H5 | |
onBackPress | 監(jiān)聽頁(yè)面返回,返回事件= {from:backbutton,navigationBack},backbutton 表示來源是左上角返回按鈕或android 返回鍵; navigateBack 表示來源是 uni.navigateBack;詳細(xì)說明及使用:onBackPress 詳解。支付寶小程序只有真機(jī)能觸發(fā),只能監(jiān)聽非 navigateBack 引起的返回,不可阻止默認(rèn)行為。 | App,H5、支付寶小程序 | |
onNavigationBarSearchInputChanged | 監(jiān)聽原生標(biāo)題欄搜索輸入框輸入內(nèi)容變化事件 | App,H5 | 1.6.0 |
onNavigationBarSearchInputConfirmed | 監(jiān)聽原生標(biāo)題欄搜索輸入框搜索事件,用戶點(diǎn)擊軟鍵盤上的“搜索”按鈕時(shí)觸發(fā)。 | App,H5 | 1.6.0 |
onNavigationBarSearchInputClicked | 監(jiān)聽原生標(biāo)題欄搜索輸入框點(diǎn)擊事件 | App,H5 | 1.6.0 |
onShareTimeline | 監(jiān)聽用戶點(diǎn)擊右上角轉(zhuǎn)發(fā)到朋友去 | 微信小程序 | 2.8.1+ |
onAddToFavorites | 監(jiān)聽用戶點(diǎn)擊右上角收藏 | 微信小程序 | 2.8.1+ |
onInit使用注意
onReachBottom 使用注意 可在 pages.json 里定義具體頁(yè)面底部的觸發(fā)距離 onReachBottomDistance,比如設(shè)為 50,那么滾動(dòng)頁(yè)面到距離底部 50px 時(shí),就會(huì)觸發(fā) onReachBottom 事件。
如使用 scroll-view 導(dǎo)致頁(yè)面沒有滾動(dòng),則觸底事件不會(huì)被觸發(fā)。scroll-view 滾動(dòng)到底部的事件請(qǐng)參考 scroll-view 的文檔
onPageScroll 參數(shù)說明:
屬性 | 類型 | 說明 |
---|---|---|
scrollTop | 數(shù) | 頁(yè)面在垂直方向已滾動(dòng)的距離(單位 px) |
注意
onTabItemTap 參數(shù)說明:
屬性 | 類型 | 說明 |
---|---|---|
指數(shù) | 串 | 被點(diǎn)擊 tabItem 的序號(hào),從 0 開始 |
pagePath | 串 | 被點(diǎn)擊 tabItem 的頁(yè)面路徑 |
文本 | 串 | 被點(diǎn)擊 tabItem 的按鈕文字 |
注意
onTabItemTap : function(e) {
console.log(e);
// e的返回格式為json對(duì)象: {"index":0,"text":"首頁(yè)","pagePath":"pages/index/index"}
},
onNavigationBarButtonTap 參數(shù)說明:
屬性 | 類型 | 說明 |
---|---|---|
指數(shù) | 數(shù) | 原生標(biāo)題欄按鈕方塊的下標(biāo) |
onNavigationBarButtonTap : function (e) {
console.log(e);
// e的返回格式為json對(duì)象:{"text":"測(cè)試","index":0}
}
onBackPress 某些參數(shù)對(duì)象說明:
屬性 | 類型 | 說明 |
---|---|---|
從 | 串 | 觸發(fā)返回行為的來源:'backbutton'-左上角導(dǎo)航欄按鈕和安卓返回鍵;'navigateBack'-uni.navigateBack()方法。支付寶小程序端不支持返回此字段 |
export default {
data() {
return {};
},
onBackPress(options) {
console.log('from:' + options.from)
}
}
注意
uni-app
組件支持的生命周期,與 vue 標(biāo)準(zhǔn)組件的生命周期相同。這里沒有頁(yè)面級(jí)的 onLoad 等生命周期:
函數(shù)名 | 說明 | 平臺(tái)差異說明 | 最低版本 |
---|---|---|---|
beforeCreate | 在實(shí)例初始化之后被調(diào)用。詳見 | ||
created | 在實(shí)例創(chuàng)建完成后被立即調(diào)用。詳見 | ||
beforeMount | 在掛載開始之前被調(diào)用。詳見 | ||
mounted | 掛載到實(shí)例上去之后調(diào)用。詳見 注意:此處并不能確定子組件被全部掛載,如果需要子組件完全掛載之后在執(zhí)行操作可以使用$nextTick Vue官方文檔
|
||
beforeUpdate | 數(shù)據(jù)更新時(shí)調(diào)用,發(fā)生在虛擬 DOM 打補(bǔ)丁之前。詳見 | 僅 H5 平臺(tái)支持 | |
updated | 由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補(bǔ)丁,在這之后會(huì)調(diào)用該鉤子。詳見 | 僅 H5 平臺(tái)支持 | |
beforeDestroy | 實(shí)例銷毀之前調(diào)用。在這一步,實(shí)例仍然完全可用。詳見 | ||
destroyed | Vue 實(shí)例銷毀后調(diào)用。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽器會(huì)被移除,所有的子實(shí)例也會(huì)被銷毀。詳見 |
更多建議: