頁面生命周期
uni-app
支持如下頁面生命周期函數:
函數名 | 說明 | 平台差異說明 |
---|---|---|
onInit | 監聽頁面初始化,其參數同 onLoad 參數,為上個頁面傳遞的數據,參數類型為 Object(用於頁面傳參),觸發時機早於 onLoad | 百度小程序 |
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 |
onNavigationBarSearchInputConfirmed | 監聽原生標題欄搜索輸入框搜索事件,用戶點擊軟鍵盤上的“搜索”按鈕時觸發。 | App、H5 |
onNavigationBarSearchInputClicked | 監聽原生標題欄搜索輸入框點擊事件(pages.json 中的 searchInput 配置 disabled 為 true 時才會觸發) | App、H5 |
onShareTimeline | 監聽用戶點擊右上角轉發到朋友圈 | 微信小程序 |
onAddToFavorites | 監聽用戶點擊右上角收藏 | 微信小程序 |
onInit
使用注意
- 僅百度小程序基礎庫 3.260 以上支持 onInit 生命周期
- 其他版本或平台可以同時使用 onLoad 生命周期進行兼容,注意避免重復執行相同邏輯
- 不依賴頁面傳參的邏輯可以直接使用 created 生命周期替代
onReachBottom
使用注意 可在pages.json里定義具體頁面底部的觸發距離onReachBottomDistance,比如設為50,那么滾動頁面到距離底部50px時,就會觸發onReachBottom事件。
在目前我常用到的頁面生命周期是onLoad、onShow和onReachBottom這三個生命周期
onLoad:監聽頁面加載和接收上個頁面傳遞的參數
onShow:頁面每次出現在屏幕上都觸發,包括從下級頁面點返回露出當前頁面
onReachBottom:用於下拉下一頁數據