推薦:《》
uni-app
支援如下應用生命週期函數:
函數名 | 說明 |
---|---|
onLaunch | 當uni-app 初始化完成時觸發(全域性只觸發一次) |
onShow | 當 uni-app 啟動,或從後臺進入前臺顯示 |
onHide | 當 uni-app 從前臺進入後臺 |
onError | 當 uni-app 報錯時觸發 |
onUniNViewMessage | 對 nvue 頁面傳送的資料進行監聽,可參考 nvue 向 vue 通訊 |
onUnhandledRejection | 對未處理的 Promise 拒絕事件監聽函數(2.8.1+) |
onPageNotFound | 頁面不存在監聽函數 |
onThemeChange | 監聽系統主題變化 |
注意
App.vue
中監聽,在其它頁面監聽無效。uni-app
支援如下頁面生命週期函數:
函數名 | 說明 | 平臺差異說明 | 最低版本 |
---|---|---|---|
onInit | 監聽頁面初始化,其引數同 onLoad 引數,為上個頁面傳遞的資料,引數型別為 Object(用於頁面傳參),觸發時機早於 onLoad | 百度小程式 | 3.1.0+ |
onLoad | 監聽頁面載入,其引數為上個頁面傳遞的資料,引數型別為 Object(用於頁面傳參),參考範例 | ||
onShow | 監聽頁面顯示。頁面每次出現在螢幕上都觸發,包括從下級頁面點返回露出當前頁面 | ||
onReady | 監聽頁面初次渲染完成。注意如果渲染速度快,會在頁面進入動畫完成前觸發 | ||
onHide | 監聽頁面隱藏 | ||
onUnload | 監聽頁面解除安裝 | ||
onResize | 監聽視窗尺寸變化 | App、微信小程式 | |
onPullDownRefresh | 監聽使用者下拉動作,一般用於下拉重新整理,參考範例 | ||
onReachBottom | 頁面捲動到底部的事件(不是scroll-view滾到底),常用於下拉下一頁資料。具體見下方注意事項 | ||
onTabItemTap | 點選 tab 時觸發,引數為Object,具體見下方注意事項 | 微信小程式、QQ小程式、支付寶小程式、百度小程式、H5、App | |
onShareAppMessage | 使用者點選右上角分享 | 微信小程式、QQ小程式、支付寶小程式、位元組小程式、飛書小程式、快手小程式 | |
onPageScroll | 監聽頁面捲動,引數為Object | nvue暫不支援 | |
onNavigationBarButtonTap | 監聽原生標題列按鈕點選事件,引數為Object | App、H5 | |
onBackPress | 監聽頁面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示來源是左上角返回按鈕或 android 返回鍵;navigateBack表示來源是 uni.navigateBack ;詳細說明及使用:onBackPress 詳解。支付寶小程式只有真機能觸發,只能監聽非navigateBack引起的返回,不可阻止預設行為。 | app、H5、支付寶小程式 | |
onNavigationBarSearchInputChanged | 監聽原生標題列搜尋輸入框輸入內容變化事件 | App、H5 | 1.6.0 |
onNavigationBarSearchInputConfirmed | 監聽原生標題列搜尋輸入框搜尋事件,使用者點選軟鍵盤上的「搜尋」按鈕時觸發。 | App、H5 | 1.6.0 |
onNavigationBarSearchInputClicked | 監聽原生標題列搜尋輸入框點選事件(pages.json 中的 searchInput 設定 disabled 為 true 時才會觸發) | App、H5 | 1.6.0 |
onShareTimeline | 監聽使用者點選右上角轉發到朋友圈 | 微信小程式 | 2.8.1+ |
onAddToFavorites | 監聽使用者點選右上角收藏 | 微信小程式 | 2.8.1+ |
onInit
使用注意
onReachBottom
使用注意 可在pages.json裡定義具體頁面底部的觸發距離onReachBottomDistance,比如設為50,那麼捲動頁面到距離底部50px時,就會觸發onReachBottom事件。
如使用scroll-view導致頁面沒有捲動,則觸底事件不會被觸發。scroll-view捲動到底部的事件請參考scroll-view的檔案
onPageScroll
(監聽捲動、捲動監聽、捲動事件)引數說明:
屬性 | 型別 | 說明 |
---|---|---|
scrollTop | Number | 頁面在垂直方向已捲動的距離(單位px) |
注意
onPageScroll
裡不要寫互動複雜的js,比如頻繁修改頁面。因為這個生命週期是在渲染層觸發的,在非h5端,js是在邏輯層執行的,兩層之間通訊是有損耗的。如果在捲動過程中,頻發觸發兩層之間的資料交換,可能會造成卡頓。onBackPress
上不可使用async
,會導致無法阻止預設返回onPageScroll : function(e) { //nvue暫不支援捲動監聽,可用bindingx代替 console.log("捲動距離為:" + e.scrollTop); },
onTabItemTap
返回的json物件說明:
屬性 | 型別 | 說明 |
---|---|---|
index | String | 被點選tabItem的序號,從0開始 |
pagePath | String | 被點選tabItem的頁面路徑 |
text | String | 被點選tabItem的按鈕文字 |
注意
onTabItemTap : function(e) { console.log(e); // e的返回格式為json物件: {"index":0,"text":"首頁","pagePath":"pages/index/index"} },
onNavigationBarButtonTap
引數說明:
屬性 | 型別 | 說明 |
---|---|---|
index | Number | 原生標題列按鈕陣列的下標 |
onNavigationBarButtonTap : function (e) { console.log(e); // e的返回格式為json物件:{"text":"測試","index":0} }
onBackPress
回撥引數物件說明:
屬性 | 型別 | 說明 |
---|---|---|
from | String | 觸發返回行為的來源:'backbutton'——左上角導航欄按鈕及安卓返回鍵;'navigateBack'——uni.navigateBack() 方法。支付寶小程式端不支援返回此欄位 |
export default { data() { return {}; }, onBackPress(options) { console.log('from:' + options.from) } }
注意
navigateBack
引發的返回事件(使用小程式開發工具時不會觸發onBackPress
),不可以阻止預設返回行為uni-app
元件支援的生命週期,與vue標準元件的生命週期相同。這裡沒有頁面級的onLoad等生命週期:
函數名 | 說明 | 平臺差異說明 | 最低版本 |
---|---|---|---|
beforeCreate | 在範例初始化之後被呼叫。詳見 | ||
created | 在範例建立完成後被立即呼叫。詳見 | ||
beforeMount | 在掛載開始之前被呼叫。詳見 | ||
mounted | 掛載到範例上去之後呼叫。詳見 注意:此處並不能確定子元件被全部掛載,如果需要子元件完全掛載之後在執行操作可以使用$nextTick Vue官方檔案 | ||
beforeUpdate | 資料更新時呼叫,發生在虛擬 DOM 打修補程式之前。詳見 | 僅H5平臺支援 | |
updated | 由於資料更改導致的虛擬 DOM 重新渲染和打修補程式,在這之後會呼叫該勾點。詳見 | 僅H5平臺支援 | |
beforeDestroy | 範例銷燬之前呼叫。在這一步,範例仍然完全可用。詳見 | ||
destroyed | Vue 範例銷燬後呼叫。呼叫後,Vue 範例指示的所有東西都會解繫結,所有的事件監聽器會被移除,所有的子範例也會被銷燬。詳見 |
推薦:《》
以上就是深入淺析uni-app的生命週期的詳細內容,更多請關注TW511.COM其它相關文章!