在 UniApp 中,生命周期函數是指在組件(如頁面、視圖等)創建和銷毀過程中會自動觸發的一些函數。UniApp 提供了多種生命周期函數,幫助開發者在適當的時機進行相關的邏輯處理。
UniApp 的生命周期函數可以分為 頁面生命周期 和 組件生命周期 兩類。以下是詳細的介紹:
一、頁面生命周期
頁面生命周期指的是每個頁面從加載、顯示到銷毀的整個過程。
-
onLoad
頁面加載時觸發,參數options
包含了頁面的啟動參數。
適用于:獲取頁面傳遞的參數,初始化頁面數據等。javascript
-
onLoad(options) {console.log('頁面加載', options); }
-
onShow
頁面每次顯示時觸發。
適用于:頁面顯示時需要刷新數據或處理一些界面相關的邏輯。javascript
-
onShow() {console.log('頁面顯示'); }
-
onReady
頁面首次渲染完成時觸發。
適用于:頁面渲染完成后的一些處理,通常用于 DOM 操作等。javascript
-
onReady() {console.log('頁面渲染完成'); }
-
onHide
頁面隱藏時觸發(如進入后臺、頁面跳轉)。
適用于:暫停或保存狀態,避免一些不必要的操作。javascript
-
onHide() {console.log('頁面隱藏'); }
-
onUnload
頁面卸載時觸發(如頁面被銷毀,用戶離開頁面)。
適用于:頁面銷毀時進行清理操作,如清除定時器、取消訂閱等。javascript
-
onUnload() {console.log('頁面卸載'); }
-
onPullDownRefresh
用戶下拉頁面時觸發。
適用于:刷新頁面內容。javascript
-
onPullDownRefresh() {console.log('頁面下拉刷新'); }
-
onReachBottom
頁面觸底時觸發。
適用于:加載更多數據。javascript
-
onReachBottom() {console.log('頁面觸底'); }
-
onPageScroll
頁面滾動時觸發。
適用于:監聽滾動位置變化,執行頁面滾動相關操作。javascript
-
onPageScroll(e) {console.log('頁面滾動', e); }
-
onShareAppMessage
用戶點擊分享按鈕時觸發。
適用于:定制分享內容。javascript
-
onShareAppMessage() {return {title: '分享標題',path: '/pages/index/index',}; }
二、組件生命周期
組件生命周期是指 UniApp 中自定義組件的生命周期函數。它分為 組件創建、組件顯示、組件銷毀 等過程。
-
created
組件實例化時觸發。
適用于:初始化組件的狀態,執行數據請求等。javascript
-
created() {console.log('組件創建'); }
-
attached
組件掛載到頁面時觸發。
適用于:DOM 節點已渲染,適合進行操作和監聽事件。javascript
-
attached() {console.log('組件掛載'); }
-
ready
組件渲染完成后觸發。
適用于:執行需要訪問組件節點的方法,如獲取元素尺寸等。javascript
-
ready() {console.log('組件渲染完成'); }
-
moved
組件被移動到節點樹中時觸發。
適用于:處理組件位置變動時的邏輯。javascript
-
moved() {console.log('組件已移動'); }
-
detached
組件從頁面卸載時觸發。
適用于:清理定時器、事件監聽器等資源。javascript
-
detached() {console.log('組件卸載'); }
三、全局生命周期
UniApp 中還可以使用一些全局生命周期函數來管理應用程序的狀態:
-
onLaunch
應用啟動時觸發。
適用于:全局初始化操作、獲取用戶信息等。javascript
-
onLaunch() {console.log('應用啟動'); }
-
onShow
應用每次顯示時觸發。
適用于:應用從后臺回到前臺時進行的一些邏輯處理。javascript
-
onShow() {console.log('應用顯示'); }
-
onHide
應用每次隱藏時觸發。
適用于:應用進入后臺時,暫停相關操作等。javascript
-
onHide() {console.log('應用隱藏'); }
-
onError
全局錯誤捕獲。
適用于:捕獲并處理應用運行時的錯誤。javascript
-
onError(msg) {console.log('應用發生錯誤:', msg); }
-
onPageNotFound
頁面不存在時觸發。
適用于:自定義 404 頁面或處理頁面跳轉失敗等。javascript
-
onPageNotFound() {console.log('頁面不存在'); }
總結
UniApp 的生命周期函數為開發者提供了豐富的鉤子,可以在不同的時間點處理相應的邏輯。頁面生命周期主要包括頁面加載、顯示、隱藏和卸載等階段,而組件生命周期則處理組件的創建、掛載、渲染和銷毀等。合理利用這些生命周期函數,可以更高效地開發 UniApp 應用,提升應用的性能和用戶體驗。