UniApp 全生命周期鉤子詳解

👉 整理不易,如果本文對你有幫助,歡迎點個【贊 👍】+【收藏 ?】+【關注 🧡】
后續我們還將繼續分享實用的 UniApp 教程,比如:

  • 文件上傳
  • 全局請求封裝
  • 狀態管理
  • 動態路由等…

📮 有任何問題歡迎留言交流哦!


🌟 收藏 + 點贊 + 關注 🌟

學習不迷路,持續更新實用教程,歡迎三連支持,讓我們一起進步!👍?🧡


📚 UniApp 全生命周期鉤子詳解

在 UniApp 中,理解生命周期鉤子是開發高質量應用的關鍵。不僅能讓我們在正確的時間初始化數據、監聽事件、釋放資源,還能提升整個應用的穩定性用戶體驗

UniApp 的生命周期融合了 Vue 的組件生命周期和各平臺(如小程序、H5、App)的頁面與應用生命周期,下面我們將分部分詳解。


🧩 一、應用生命周期(App Lifecycle)

📍應用生命周期指的是整個應用從啟動到退出的完整過程,這些鉤子定義在 App.vue 中,適用于全局邏輯控制,如初始化、錯誤處理、全局狀態管理等。

生命周期鉤子觸發時機常見用途
onLaunch應用初始化時,僅觸發一次初始化配置、獲取系統信息、檢查登錄狀態等
onShow應用進入前臺或啟動時觸發恢復狀態、處理跳轉參數等
onHide應用進入后臺時觸發暫停任務、保存數據
onError腳本錯誤或 API 調用失敗時觸發全局錯誤監控與上報
onPageNotFound頁面不存在時觸發自定義 404 頁面跳轉
onUnhandledRejectionPromise 被拒絕且未捕獲時觸發異常統一處理

💡 示例代碼

// App.vue
export default {onLaunch(options) {console.log('App Launch', options)// 初始化操作},onShow(options) {console.log('App Show', options)},onHide() {console.log('App Hide')},onError(err) {console.error('App Error', err)},onPageNotFound(res) {console.log('Page Not Found', res)uni.reLaunch({ url: '/pages/404/404' })},onUnhandledRejection(event) {console.error('Unhandled Promise Rejection', event)}
}

📄 二、頁面生命周期(Page Lifecycle)

📍頁面生命周期發生在用戶訪問頁面的過程中,每個頁面(如 pages/index/index.vue)都有自己的一套生命周期鉤子。

生命周期鉤子觸發時機說明
onLoad頁面加載時(只觸發一次)接收跳轉參數,初始化數據
onShow頁面每次顯示時觸發刷新頁面數據
onReady頁面首次渲染完成可進行 DOM 操作
onHide頁面被隱藏(如跳轉其他頁面)暫停動畫、保存狀態
onUnload頁面卸載(如返回上一頁)清除定時器等資源
onPullDownRefresh用戶下拉頁面時觸發實現刷新邏輯(需配置)
onReachBottom頁面滾動到底部時觸發加載更多數據
onPageScroll頁面滾動時觸發用于監聽滾動高度
onResize窗口大小變化時觸發響應式布局
onShareAppMessage用戶點擊右上角分享時觸發(小程序)自定義分享內容
onTabItemTap點擊 tab 頁面時觸發獲取點擊 tab 信息

💡 示例代碼

// pages/index/index.vue
export default {onLoad(options) {console.log('Page Load', options)},onShow() {console.log('Page Show')},onReady() {console.log('Page Ready')},onHide() {console.log('Page Hide')},onUnload() {console.log('Page Unload')},onPullDownRefresh() {console.log('Pull Down Refresh')setTimeout(() => {uni.stopPullDownRefresh()}, 1000)},onReachBottom() {console.log('Reached Bottom')},onShareAppMessage() {return {title: '自定義分享標題',path: '/pages/index/index'}},onPageScroll(e) {console.log('Page Scroll', e.scrollTop)},onResize(e) {console.log('Resize', e.size)},onTabItemTap(item) {console.log('Tab Item Tap', item)}
}

🔄 三、Vue 生命周期與 UniApp 的關系

UniApp 頁面組件保留了 Vue 的生命周期鉤子(如 createdmounteddestroyed),它們與 UniApp 的生命周期一起工作:

? 執行順序舉例:

beforeCreate → created → beforeMount → mounted
↓
onLoad → onShow → onReady(UniApp特有)
↓
onHide / onUnload
→ beforeDestroy → destroyed

💡 注意:Vue 的 created 階段不能操作 DOM,應在 mountedonReady 中進行。


🔧 四、應用場景總結

鉤子場景應用示例
onLaunch初始化全局狀態、獲取設備信息
onShow頁面/應用從后臺回到前臺時刷新數據
onHide頁面/應用切換或關閉時保存數據
onUnload頁面銷毀時清理定時器
onReachBottom分頁加載、數據追加
onPullDownRefresh刷新內容數據
onErroronUnhandledRejection統一錯誤處理,提升穩定性
onShareAppMessage增強用戶分享體驗

🧠 五、開發建議

  • ? 執行順序要清楚:Vue 與 UniApp 的生命周期有先后,操作 DOM 要放對位置。
  • ? 多端適配要注意:不同平臺生命周期略有差異,建議測試時多平臺調試。
  • ? 資源管理別忽視:如定時器、網絡請求要及時清理,避免內存泄漏。
  • ? 全局錯誤需監控:用 onErroronUnhandledRejection 報錯上報/提醒。
  • ? 參數接收別遺漏onLoadoptions 是跳轉參數關鍵來源。

? 總結

📌 UniApp 的生命周期鉤子 = Vue 生命周期 + 小程序生命周期 + 應用生命周期
掌握這些鉤子,就像掌握了頁面和應用行為的“遙控器”🔧。合理使用生命周期鉤子,不僅能讓你的頁面邏輯更清晰,還能顯著提升用戶體驗和程序性能。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85891.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85891.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85891.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索NautilusTrader:下一代開源算法交易平臺的革命性突破

在金融科技的浪潮中,量化交易領域正經歷一場由開源技術驅動的變革。NautilusTrader(https://github.com/nautechsystems/nautilus_trader)作為一款高性能、生產級的算法交易平臺,正以其創新的設計理念和強大的技術架構重塑開發者的策略研發流程。 一、核心定位:打破回測與…

QT開發技術【ffmpeg + QAudioOutput】音樂播放器

一、 介紹 使用ffmpeg 4.2.2 在數字化浪潮席卷全球的當下,音視頻內容猶如璀璨繁星,點亮了人們的生活與工作。從短視頻平臺上令人捧腹的搞笑視頻,到在線課堂中知識淵博的專家授課,再到影視平臺上扣人心弦的高清大片,音…

[論文閱讀] (38)基于大模型的威脅情報分析與知識圖譜構建論文總結(讀書筆記)

《娜璋帶你讀論文》系列主要是督促自己閱讀優秀論文及聽取學術講座,并分享給大家,希望您喜歡。由于作者的英文水平和學術能力不高,需要不斷提升,所以還請大家批評指正,非常歡迎大家給我留言評論,學術路上期…

python批量解析提取word內容到excel

# 基于Python實現Word文檔內容批量提取與Excel自動化存儲 ## 引言 在日常辦公場景中,常需要從大量Word文檔中提取結構化數據并整理到Excel表格中。傳統手動操作效率低下,本文介紹如何通過Python實現自動化批處理,使用python-docx和openpyxl…

win32相關(遠程線程和遠程線程注入)

遠程線程和遠程線程注入 CreateRemoteThread函數 作用:創建在另一個進程的虛擬地址空間中運行的線程 HANDLE CreateRemoteThread([in] HANDLE hProcess, // 需要在哪個進程中創建線程[in] LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全…

Flyway

Flyway 是一個強大的數據庫版本控制和遷移工具,主要用于管理數據庫結構的變更和演進。 核心作用 1. 數據庫版本控制 追蹤數據庫變更:記錄每次數據庫結構的修改版本管理:為每個變更分配版本號變更歷史:完整記錄數據庫演進過程 …

【深尚想】OPA855QDSGRQ1運算放大器IC德州儀器TI汽車級高速8GHz增益帶寬的全面解析

1. 元器件定義與核心特性 OPA855QDSGRQ1 是德州儀器(TI)推出的一款 汽車級高速運算放大器,專為寬帶跨阻放大(TIA)和電壓放大應用優化。核心特性包括: 超高速性能:增益帶寬積(GBWP&a…

機器學習實驗八--基于pca的人臉識別

基于pca的人臉識別 引言:pca1.pca是什么2.PCA算法的基本步驟 實例:人臉識別1.實驗目的2.實現步驟3.代碼實現4.實驗結果5.實驗總結 引言:pca 1.pca是什么 pca是一種統計方法,它可以通過正交變換將一組可能相關的變量轉換成一組線…

【LLIE專題】NTIRE 2025 低照度圖像增強第二名方案

Towards Scale-Aware Low-Light Enhancement via Structure-Guided Transformer Design(2025,NTIRE) 專題介紹一、研究背景二、SG-LLIE方法1.和Retinexformer方案對比2.總體方案及創新點3.詳細方案3.1 結構先驗提取3.2 網絡結構3.3 損失函數 …

泊松融合的介紹和OpenCV教程

泊松融合 Poisson Blending 簡介 核心思想 泊松融合的目標是在保留剪切圖像的梯度(紋理)信息的同時,使融合結果在邊界區域平滑過渡到目標圖像中。換句話說,它在融合區域中重建一個圖像,使其梯度盡可能接近源圖像的梯度,并且邊界貼合目標圖像。 數學描述 泊松融合將問題…

Unity協程Coroutine與UniTask對比

原理對比 CoroutineUniTask本質IEnumerator 的協作調度器async/await 狀態機(IAsyncStateMachine)調度方式Unity 內部調用 MoveNext()自建 PlayerLoopRunner 控制狀態推進內存管理引用類型,頻繁分配 GC結構體 UniTask,低 GC 壓力…

MAC軟件打開提示已損壞:“已損壞,打不開。您應將它移到廢紙簍“

打開「終端.app」,輸入以下命令并回車,輸入開機密碼回車 sudo spctl --master-disable 按照上述步驟操作完成后,打開「系統偏好設置」-「安全與隱私」-「通用」,確保已經修改為「任何來源」。 打開「終端.app」,輸入…

JAVA之 Lambda

Java Lambda Lambda 表達式是 Java 8 的核心特性,通過 函數式編程 大幅簡化代碼。其核心思想是將行為作為參數傳遞,替代匿名內部類,提升代碼的簡潔性和可讀性。以下是系統解析和完整代碼示例: 一、Lambda 表達式基礎 語法結構 (…

Starrocks中RoaringBitmap雜談

背景 最近在閱讀Starrocks源碼的時候&#xff0c;遇到ColumnRefSet的RoaringBitmap使用&#xff0c;所以借此來討論一下RoaringBitmap這個數據結構,這種思想是很值得借鑒的。 對于的實現可以參考一下 <dependency><groupId>org.roaringbitmap</groupId><…

數據結構:泰勒展開式:霍納法則(Horner‘s Rule)

目錄 &#x1f50d; 若用遞歸計算每一項&#xff0c;會發生什么&#xff1f; Horners Rule&#xff08;霍納法則&#xff09; 第一步&#xff1a;我們從最原始的泰勒公式出發 第二步&#xff1a;從形式上重新觀察展開式 &#x1f31f; 第三步&#xff1a;引出霍納法則&…

從Java的Jvm的角度解釋一下為什么String不可變?

從Java的Jvm的角度解釋一下為什么String不可變&#xff1f; 從 JVM 的角度看&#xff0c;Java 中 String 的不可變性是由多層次的機制共同保障的&#xff0c;這些設計涉及內存管理、性能優化和安全保障&#xff1a; 1. JVM 內存模型與字符串常量池 字符串常量池&#xff08;St…

初識硬編碼(x86指令描述)

硬編碼 任何一個程序其實都可以看做兩部分組成的&#xff0c;指令和數據 cpu并沒有明確的規定哪些要當做數據&#xff0c;哪些要當做指令來執行&#xff0c;把數據給EIP只要是遵循了指定的格式&#xff08;x86 x64 ARM&#xff09;&#xff0c;cpu都會當做指令來執行 x86/x64…

3.RV1126-OPENCV 圖像疊加

一.功能介紹 圖像疊加&#xff1a;就是在一張圖片上放上自己想要的圖片&#xff0c;如LOGO&#xff0c;時間等。有點像之前提到的OSD原理一樣。例如&#xff1a;下圖一張圖片&#xff0c;在左上角增加其他圖片。 二.OPENCV中圖像疊加常用的API 1. copyTo方法進行圖像疊加 原理…

MySQL垂直分庫(基于MyCat)

參考資料&#xff1a; 參考視頻 參考博客 Mycat基本部署 視頻參考資料&#xff1a;鏈接: https://pan.baidu.com/s/1xT_WokN_xlRv0h06b6F3yg 提取碼: aag3 概要&#xff1a; 本文的垂直分庫&#xff0c;全部是基于前文部署的基本架構進行的 垂直分庫&#xff1a; 垂直分庫…

Spitfire:Codigger 生態中的高性能、安全、分布式瀏覽器

Spitfire 是 Codigger 生態系統中的一款現代化瀏覽器&#xff0c;專為追求高效、隱私和分布式技術的用戶設計。它結合了 Codigger 的分布式架構優勢&#xff0c;在速度、安全性和開發者支持方面提供了獨特的解決方案&#xff0c;同時確保用戶對數據的完全控制。 1. 高性能瀏覽…